|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
окно CreateWindow + смена языков
Создаю окно с помощью 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. 1) При попытке сменить язык кликая курсором по языковой панели получаю подвисание + панель не показует список языков; 2) Пытаюсь сменить язык с помощью Shift + Alt – работает но не так как на делфовской форме, т.е. при простом нажатии Shift + Alt как повезет то переключится то нет, но если кликнуть и зажать ЛКМ на заголовке окна и нажимая комбинацию клавиш все замечательно работает. Такое ощущение, что сообщение WM_INPUTLANGCHANGEREQUEST просто не доходит до обработчика пока за ним не построиться очередь из других сообщений Кто что может посоветовать по устранению эффектов 1 и 2 ? |