Значит, MFC приложение, non-document.
Сплиттер, два pane-а, слева FormView, справа FormView.
На любом контроле (edit например) в любом окне, в том числе и на диалогах появляющихся поверх главного окна не работает переключение раскладки клавиатуры.
Смотрю spy-ем — сообщение WM_INPUTLANGCHANGEREQUEST не приходит. Другим приложениям приходит, а мне — нет.
Поскажите плиз, хотя бы в какую сторону копать.
Спасибо
Re: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Leonid Troyanovsky, Вы писали: LT>Дык, оно приходит to the application's top-level window
Другим приложениям приходит в обычный edit
Своими глазами вижу
Re[3]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Leonid Troyanovsky, Вы писали: LT>Возможно, что другие пересылают оное своим чадам.
Проверил.
1. Моему главному окну это сообщение тоже не приходит.
2. Запускаем notepad, там есть главное окно, есть дочерний edit.
Все сообщения WM_INPUTLANGCHANGEREQUEST и WM_INPUTLANGCHANGE получает именно Edit!
Главное окно подобных сообщений не получает.
Re[5]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Кстати еще одна деталь.
С помощью панели в трее, мышкой то есть, переключение происходит нормально.
Т.е. предположительно трабла в том, что моё приложение каким-то образом перехватывает Ctrl+Shift... И если так, то основной вопрос — как это можно выяснить? Приложение большое, я пересмотрел все PreTranslateMessage, все обработчики WM_KEYDOWN/UP.
Re[6]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Однако, через пару часов я обязательно это проверю и доложу
Sorry, пробки.
Первый следственный эксперимент подтверждает правоту подзащитного.
По мнению winsight32 (аналог spy++) сообщение
to notepad WM_INPUTLANGCHANGEREQUEST получает его EDIT.
Будем смотреть дальше.
--
С уважением, LVT
Re[2]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Leonid Troyanovsky, Вы писали: LT>А если поставить WH_KEYBOARD_LL и при требуемой комбинации (и не обязательно Ctrl+Shift!) LT>переключить раскладку?
Сори, я не много не в теме про хуки.
Ну т.е. получается, что я буду имитировать работу ctfmon.exe? А если в системе работает другая переключалка и она работает как-то хитро... хз как, но не так, как обычно.
А еще мне получается надо выяснить требуемую комбинацию Ctrl-Shift или Alt-Shift или какие там еще варианты бывают... бррр...
Мне бы хотелось выяснить почему именно на моем приложении не переключается раскладка. И устранить причину.
Re[7]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Будем смотреть дальше.
О.. Древний msdn был много прямей, когда утверждал, что
The WM_INPUTLANGCHANGEREQUEST message is posted
to the application's top-level window when the user chooses an input language.
Дейс-но, posted, WinXP SP2.
--
С уважением, LVT
Re[2]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Amor, Вы писали:
A>С помощью панели в трее, мышкой то есть, переключение происходит нормально. A>Т.е. предположительно трабла в том, что моё приложение каким-то образом перехватывает Ctrl+Shift
Если это приложение есть СB, то есть предположение, что перехватывает окно Application.
По поводу notepad пока гипотез нет.
--
С уважением, LVT
Re[4]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Leonid Troyanovsky, Вы писали: LT>Если это приложение есть СB, то есть предположение, что перехватывает окно Application. LT>По поводу notepad пока гипотез нет.
СВ — это что?
Re[4]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Amor, Вы писали:
LT>>Прежде всего хотелось бы знать, приходит ли в message loop сообщение WM_INPUTLANGCHANGEREQUEST.
A>Однозначно нет, ни в edit, ни в главное окно
Я ж не спрашивал в окно — в message loop.
--
С уважением, LVT
Re[5]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>О.. Древний msdn был много прямей, когда утверждал, что LT>The WM_INPUTLANGCHANGEREQUEST message is posted LT>to the application's top-level window when the user chooses an input language.
Здравствуйте, Amor, Вы писали:
A>С помощью панели в трее, мышкой то есть, переключение происходит нормально. A>Т.е. предположительно трабла в том, что моё приложение каким-то образом перехватывает Ctrl+Shift... И если так, то основной вопрос — как это можно выяснить? Приложение большое, я пересмотрел все PreTranslateMessage, все обработчики WM_KEYDOWN/UP.
А хоткеи?
Не показывает ли spy на твоем приложении WM_HOTKEY при нажатии волшебных клавиш?
Или WM_COMMAND, если это акселератор.
--
С уважением, LVT
Re[9]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Leonid Troyanovsky, Вы писали: LT>А что за код вызывается при каждом нажатии и отжатии клавиши?
Там обновляется содержимое дерева, рядом с которым расположен этот edit (вернее ввод осуществлялся в combo)
LT>Нет ли среди него к.л. PeekMessage?
Врядли, но даже если б был, то это не дало б ответ на вопрос, почему WM_INPUTLANGCHANGEREQUEST вообще не попадает в очередь сообщений.
LT>А что получается если использовать Alt+Shift для переключения?
Внешне тоже самое. Раскладка не переключается. Более глубокого анализа не проводил...
Re[14]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
Здравствуйте, Amor, Вы писали:
A>Врядли, но даже если б был, то это не дало б ответ на вопрос, почему WM_INPUTLANGCHANGEREQUEST вообще не попадает в очередь сообщений.
Оно и не генерируется.
Т.е., в момент WM_KEYUP один из WM_KEYDOWN уже кто-то "съел".
--
С уважением, LVT
Re[14]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST