![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с WM_INPUTLANGCHANGE
Fred Perry © (2004-04-16 18:18:00)Доброго времени суток!
Хочу в свою прогу добавить индикатор текущей раскладки клавиатуры. На пустой форме все работет нормально. Но если положить на форму например TEdit, то получается облом... Опытным путем удалось выяснить, что в данном случае сообщение (сабж) вообще не приходит Form'е. Мне думается, что оно посылается только Edit'у (или какому-либо другому контролу, активному в текущий момент). Как побороть?
Заранее благодарен.
nikkie (2004-04-17 23:04:00) [1]теперь вижу :)
но WM_INPUTLANGCHANGEREQUEST написано "is posted to the window with the focus", а вот про - почему-то WM_INPUTLANGCHANGE "is sent to the topmost affected window".
Игорь Шевченко (2004-04-17 22:25:00) [2][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 21:30:00) [3]да, странно. ощущение, что посылается не topmost окну, а focused.
ловить у всех детей не надо. ловить надо в Application.OnMessage.
Игорь Шевченко (2004-04-17 21:08:00) [4]http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip
Боян Георгиев (2004-04-17 18:13:00) [5]GetKeyboardLayout + TTimer
Fred Perry (2004-04-17 16:42:00) [6]Ну что же вы, мастера?
Fred Perry (2004-04-16 18:39:00) [7]тьфу! не в systray'е, а в internat'е
Fred Perry (2004-04-16 18:37:00) [8]Хм... плохо... это мне на каждом контроле чтоль эту мессагу ловить? А есть какой-нить другой способ отловить момент смены раскладки? Как в systray'е это происходит?
WebErr (2004-04-16 18:34:00) [9]
> Как побороть?
Поймал - передай Parent'у!
Тимохов (2004-04-16 18:31:00) [10]
> будет TEdit, а не форма?
будет edit.
Fred Perry (2004-04-16 18:29:00) [11]Ну так все правильно, только вот у меня оно и НЕ посылается topmost окну. Или topmost в моем случае и будет TEdit, а не форма?
WebErr (2004-04-16 18:22:00) [12]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.