Создаю окно с помощью WINAPI – CreateWindow со стандартным обработчиком сообщений
Код:
program Project1;
uses
Windows,
Messages;
Function RegClass(NameClass: PAnsiChar):Boolean;stdcall;
var WC : WNDClassEX;
Icon1 : HIcon;
Begin
ZeroMemory(@WC,sizeof(WC));
WC.cbSize := sizeof(WC);
WC.style := 0;
WC.lpfnWndProc := @DefWindowProc;
WC.hInstance := GetModuleHandle(nil);
Icon1 := LoadIcon(GetModuleHandle(nil),'MAINICON');
WC.hIcon := Icon1;
WC.hIconSm := Icon1;
WC.hCursor := LoadCursor(0,IDC_ARROW);
WC.hbrBackground := COLOR_WINDOW;
WC.lpszClassName := NameClass;
if RegisterClassEx(WC)<> 0 then Result := True
else Result := False;
end;
var H : HWND;
Mess : tagMSG;
begin
if RegClass('_Rc') then
Begin
H := CreateWindow('_Rc','MyWnd',WINDOWS.WS_OVERLAPPEDWINDOW,0,0,500,200,HWND(nil),hMenu(nil),GetModuleHandle(nil),nil);
ShowWindow(H,SW_SHOW);
While (Integer(GetMessage(Mess,H,0,0)) > 0) do
begin
TranslateMessage(Mess);
DispatchMessage(Mess);
end;
end;
end.
Жму F9, появляется окно.
1) При попытке сменить язык кликая курсором по языковой панели получаю подвисание + панель не показует список языков;
2) Пытаюсь сменить язык с помощью Shift + Alt – работает но не так как на делфовской форме, т.е. при простом нажатии Shift + Alt как повезет то переключится то нет, но если кликнуть и зажать ЛКМ на заголовке окна и нажимая комбинацию клавиш все замечательно работает.
Такое ощущение, что сообщение WM_INPUTLANGCHANGEREQUEST просто не доходит до обработчика пока за ним не построиться очередь из других сообщений
Кто что может посоветовать по устранению эффектов 1 и 2 ?