Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.042 c
3-1083061209
kalliopiy
2004-04-27 14:20
2004.05.23
Вопрос по теории


14-1083833901
pasha_golub
2004-05-06 12:58
2004.05.23
SPAM. Месть начинается.


1-1084287680
Eugene30
2004-05-11 19:01
2004.05.23
Как программно (в run-time) получить список всех форм проекта?


14-1083398784
Вопрошающий
2004-05-01 12:06
2004.05.23
Новый монитор


14-1083308098
P_Aleks
2004-04-30 10:54
2004.05.23
Мелодия из Doors Spanish Caravan





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский