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

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

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

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

Сообщение верволк » 23.03.2016 10:33:44

Перечисляю окна и вывожу их список в мемо.
Проблема: после перехода с версии лазаруса 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;
==================================
верволк
незнакомец
 
Сообщения: 2
Зарегистрирован: 23.03.2016 10:20:22

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

Сообщение resident » 23.03.2016 13:58:11

Код: Выделить всё
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}
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

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

Сообщение верволк » 23.03.2016 14:17:18

Спасибо, работает. Одно не могу понять почему раньше с UTF8Encode работало, а теперь нет.
верволк
незнакомец
 
Сообщения: 2
Зарегистрирован: 23.03.2016 10:20:22

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

Сообщение resident » 23.03.2016 14:54:30

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

viewtopic.php?f=5&t=10850
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 236

Рейтинг@Mail.ru