Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо