Главная страница
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.079 c
1-1084224786
demonyator
2004-05-11 01:33
2004.05.23
Содержимое файла Word


14-1083442276
RealRascal
2004-05-02 00:11
2004.05.23
Придумываение замысловатых паролей.


11-1069402107
Gandalf
2003-11-21 11:08
2004.05.23
Apollo project?


8-1078354024
Uber ASSA
2004-03-04 01:47
2004.05.23
Перерисовка Flash ролика


14-1082974970
Даже и не знаю кто я теперь.
2004-04-26 14:22
2004.05.23
Была тема про дизайн сайта. Это продолжение.