Форум: "Система";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизПроблема с 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.032 c