Русские заголовки окон.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
верволк
незнакомец
Сообщения: 2
Зарегистрирован: 23.03.2016 09:20:22

Русские заголовки окон.

Сообщение верволк »

Перечисляю окна и вывожу их список в мемо.
Проблема: после перехода с версии лазаруса 1.4 на 1.6 вместо русских заголовков окон стали появляться чёрные ромбики со знаком вопроса. Как бы снова получить нормальный русский текст?
Винда - десятка.

Код: Выделить всё

  pWindowDescriptor = ^TWindowDescriptor;

  TWindowDescriptor = class
    Header:HWND;
    Name:UnicodeString;
    ObjectClassName:UnicodeString;
    ChaildWindowsList:pWindowDescriptor;
    Constructor create(const WinHeader:HWND);
    procedure SetData(const WinHeader:HWND);
    function Caption:string;
  end;

function TWindowDescriptor.Caption:string;
begin
  result:=IntToHex(Header,4) +' '+Name+' '+ObjectClassName;
end;
TWindowList = class (TList)

Function WindowProcessing(WinHeader: HWnd; Param: Int64): LongBool; stdcall;
var
  Title,ClassName:array[0..256] of Char;
  sTitle,sClassName,sName:UnicodeString;
begin
  GetWindowText(WinHeader, Title,255);
  GetClassName(WinHeader, ClassName,255);
  sTitle:=UTF8Encode(Title);
  sClassName:=UTF8Encode(Classname);
  WindowList.Add(TWindowDescriptor.create(WinHeader));
  Result:=true;
end;
===================================
  EnumWindows (@WindowProcessing,0);
  if WindowList.Count>0 then
  begin
    for i:=0 to WindowList.Count-1 do
      Memo3.Lines.Add(TWindowDescriptor(WindowList.Items[i]).Caption);
 end;
==================================
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Сообщение resident »

Код: Выделить всё

uses
  LazUTF8;

Код: Выделить всё

// for all Windows supporting 8bit codepages (e.g. not WinCE)
// converts string in Windows code page to UTF8 (used with some Windows specific functions)
function WinCPToUTF8(const s: string): string; {$ifdef WinCe}inline;{$endif}
верволк
незнакомец
Сообщения: 2
Зарегистрирован: 23.03.2016 09:20:22

Сообщение верволк »

Спасибо, работает. Одно не могу понять почему раньше с UTF8Encode работало, а теперь нет.
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Сообщение resident »

верволк писал(а):Одно не могу понять почему раньше с UTF8Encode работало, а теперь нет.

viewtopic.php?f=5&t=10850
Ответить