Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 11:05
Оценка:
Значит, MFC приложение, non-document.
Сплиттер, два pane-а, слева FormView, справа FormView.

На любом контроле (edit например) в любом окне, в том числе и на диалогах появляющихся поверх главного окна не работает переключение раскладки клавиатуры.
Смотрю spy-ем — сообщение WM_INPUTLANGCHANGEREQUEST не приходит. Другим приложениям приходит, а мне — нет.

Поскажите плиз, хотя бы в какую сторону копать.
Спасибо
Re: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 11:18
Оценка:
Здравствуйте, Amor, Вы писали:

A>Смотрю spy-ем — сообщение WM_INPUTLANGCHANGEREQUEST не приходит. Другим приложениям приходит, а мне — нет.


Дык, оно приходит to the application's top-level window

A>Поскажите плиз, хотя бы в какую сторону копать.


Например, поставь хук, хоть на WH_SHELL.
--
С уважением, LVT
Re[2]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 12:22
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Дык, оно приходит to the application's top-level window
Другим приложениям приходит в обычный edit
Своими глазами вижу
Re[3]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 12:54
Оценка:
Здравствуйте, Amor, Вы писали:

LT>>Дык, оно приходит to the application's top-level window


A>Другим приложениям приходит в обычный edit


Возможно, что другие пересылают оное своим чадам.
--
С уважением, LVT
Re[4]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 13:14
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Возможно, что другие пересылают оное своим чадам.

Проверил.

1. Моему главному окну это сообщение тоже не приходит.

2. Запускаем notepad, там есть главное окно, есть дочерний edit.
Все сообщения WM_INPUTLANGCHANGEREQUEST и WM_INPUTLANGCHANGE получает именно Edit!
Главное окно подобных сообщений не получает.
Re[5]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 13:30
Оценка:
Здравствуйте, Amor, Вы писали:

A>Главное окно подобных сообщений не получает.


Пока я больше доверяю
http://msdn.microsoft.com/en-us/library/ms632629(VS.85).aspx

Однако, через пару часов я обязательно это проверю и доложу
--
С уважением, LVT
Re: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 14:00
Оценка:
Кстати еще одна деталь.
С помощью панели в трее, мышкой то есть, переключение происходит нормально.
Т.е. предположительно трабла в том, что моё приложение каким-то образом перехватывает Ctrl+Shift... И если так, то основной вопрос — как это можно выяснить? Приложение большое, я пересмотрел все PreTranslateMessage, все обработчики WM_KEYDOWN/UP.
Re[6]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 15:43
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:

LT>Однако, через пару часов я обязательно это проверю и доложу


Sorry, пробки.

Первый следственный эксперимент подтверждает правоту подзащитного.
По мнению winsight32 (аналог spy++) сообщение
to notepad WM_INPUTLANGCHANGEREQUEST получает его EDIT.
Будем смотреть дальше.
--
С уважением, LVT
Re[2]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 15:57
Оценка:
Здравствуйте, Amor, Вы писали:

A>Т.е. предположительно трабла в том, что моё приложение каким-то образом перехватывает Ctrl+Shift...


А если поставить WH_KEYBOARD_LL и при требуемой комбинации (и не обязательно Ctrl+Shift!)
переключить раскладку?
--
С уважением, LVT
Re[3]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 16:25
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>А если поставить WH_KEYBOARD_LL и при требуемой комбинации (и не обязательно Ctrl+Shift!)
LT>переключить раскладку?

Сори, я не много не в теме про хуки.
Ну т.е. получается, что я буду имитировать работу ctfmon.exe? А если в системе работает другая переключалка и она работает как-то хитро... хз как, но не так, как обычно.
А еще мне получается надо выяснить требуемую комбинацию Ctrl-Shift или Alt-Shift или какие там еще варианты бывают... бррр...

Мне бы хотелось выяснить почему именно на моем приложении не переключается раскладка. И устранить причину.
Re[7]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 16:27
Оценка:
Здравствуйте, 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
От: Leonid Troyanovsky  
Дата: 10.11.08 16:36
Оценка:
Здравствуйте, Amor, Вы писали:

A>С помощью панели в трее, мышкой то есть, переключение происходит нормально.

A>Т.е. предположительно трабла в том, что моё приложение каким-то образом перехватывает Ctrl+Shift

Если это приложение есть СB, то есть предположение, что перехватывает окно Application.
По поводу notepad пока гипотез нет.
--
С уважением, LVT
Re[4]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 16:42
Оценка:
Здравствуйте, Amor, Вы писали:

A>Мне бы хотелось выяснить почему именно на моем приложении не переключается раскладка. И устранить причину.


Прежде всего хотелось бы знать, приходит ли в message loop сообщение WM_INPUTLANGCHANGEREQUEST.
--
С уважением, LVT
Re[5]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 16:44
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Прежде всего хотелось бы знать, приходит ли в message loop сообщение WM_INPUTLANGCHANGEREQUEST.

Однозначно нет, ни в edit, ни в главное окно
Re[3]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 16:45
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Если это приложение есть СB, то есть предположение, что перехватывает окно Application.
LT>По поводу notepad пока гипотез нет.

СВ — это что?
Re[4]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 16:55
Оценка:
Здравствуйте, Amor, Вы писали:

LT>>Если это приложение есть СB, то есть предположение, что перехватывает окно Application.


A>СВ — это что?


Гм.. надо больше информации, старайся.
--
С уважением, LVT
Re[6]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 16:57
Оценка:
Здравствуйте, Amor, Вы писали:

LT>>Прежде всего хотелось бы знать, приходит ли в message loop сообщение WM_INPUTLANGCHANGEREQUEST.


A>Однозначно нет, ни в edit, ни в главное окно


Я ж не спрашивал в окно — в message loop.
--
С уважением, LVT
Re[5]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 16:58
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Гм.. надо больше информации, старайся.
Не понял...
Re[6]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 17:03
Оценка:
Здравствуйте, Amor, Вы писали:

LT>>Гм.. надо больше информации, старайся.

A>Не понял...
http://rsdn.ru/forum/message/3170505.1.aspx
Автор: Leonid Troyanovsky
Дата: 10.11.08
--
С уважением, LVT
Re[7]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 17:03
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Я ж не спрашивал в окно — в message loop.

Повесил spy на главный поток — такие сообщения не приходят.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.