Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Проблема с WM_INPUTLANGCHANGE   Найти похожие ветки 

 
Fred Perry   (2004-04-16 18:18) [0]

Доброго времени суток!

Хочу в свою прогу добавить индикатор текущей раскладки клавиатуры. На пустой форме все работет нормально. Но если положить на форму например TEdit, то получается облом... Опытным путем удалось выяснить, что в данном случае сообщение (сабж) вообще не приходит Form"е. Мне думается, что оно посылается только Edit"у (или какому-либо другому контролу, активному в текущий момент). Как побороть?

Заранее благодарен.


 
WebErr ©   (2004-04-16 18:22) [1]

The WM_INPUTLANGCHANGE message is sent to the topmost affected window after a task"s locale has been changed. It should be used to make any application-specific settings and passed on to the DefWindowProc function to be passed on to any children.


 
Fred Perry   (2004-04-16 18:29) [2]

Ну так все правильно, только вот у меня оно и НЕ посылается topmost окну. Или topmost в моем случае и будет TEdit, а не форма?


 
Тимохов ©   (2004-04-16 18:31) [3]


> будет TEdit, а не форма?

будет edit.


 
WebErr ©   (2004-04-16 18:34) [4]


> Как побороть?

Поймал - передай Parent"у!


 
Fred Perry   (2004-04-16 18:37) [5]

Хм... плохо... это мне на каждом контроле чтоль эту мессагу ловить? А есть какой-нить другой способ отловить момент смены раскладки? Как в systray"е это происходит?


 
Fred Perry   (2004-04-16 18:39) [6]

тьфу! не в systray"е, а в internat"е


 
Fred Perry   (2004-04-17 16:42) [7]

Ну что же вы, мастера?


 
Боян Георгиев   (2004-04-17 18:13) [8]

GetKeyboardLayout + TTimer


 
Игорь Шевченко ©   (2004-04-17 21:08) [9]

http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip


 
nikkie ©   (2004-04-17 21:30) [10]

да, странно. ощущение, что посылается не topmost окну, а focused.
ловить у всех детей не надо. ловить надо в Application.OnMessage.


 
Игорь Шевченко ©   (2004-04-17 22:25) [11]

[10] nikkie ©   (17.04.04 21:30)

Цитата из моей ссылки:

procedure TfMain.ApplicationEventsMessage(var Msg: tagMSG;
 var Handled: Boolean);
begin
 if Msg.message = WM_INPUTLANGCHANGEREQUEST then begin
   FCurrentKeyboardLanguage := LOWORD(Msg.lParam);
   KeyboardLayoutsListBox.Repaint();
 end;
end;


 
nikkie ©   (2004-04-17 23:04) [12]

теперь вижу :)
но WM_INPUTLANGCHANGEREQUEST написано "is posted to the window with the focus", а вот про - почему-то WM_INPUTLANGCHANGE "is sent to the topmost affected window".



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
1-1083901059
Mihail
2004-05-07 07:37
2004.05.23
Отображение HTML-страниц в Delphi


1-1083604314
Goida
2004-05-03 21:11
2004.05.23
Как поместить в DLL MDI форму?


3-1083260681
denik
2004-04-29 21:44
2004.05.23
MS SQL --> MySQL


9-1074002243
ZAROLF
2004-01-13 16:57
2004.05.23
GamePlay


3-1083259773
Mister
2004-04-29 21:29
2004.05.23
MySQL