Не приходит сообщение 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 на главный поток — такие сообщения не приходят.
Re[7]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 17:06
Оценка:
Ну там я ответил... а про СВ я не понял. что это?
Re[8]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 17:06
Оценка:
Здравствуйте, Amor, Вы писали:

A>Повесил spy на главный поток — такие сообщения не приходят.


Сам вешай хук WH_GETMESAGE и доложи о результате.
--
С уважением, LVT
Re[8]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 17:08
Оценка:
Здравствуйте, Amor, Вы писали:

A>Ну там я ответил... а про СВ я не понял. что это?


CBuilder, расслабься.
--
С уважением, LVT
Re[9]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 10.11.08 17:09
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Сам вешай хук WH_GETMESAGE и доложи о результате.
ок. завтра уже попробую.
спасибо за сотрудничество
Re[10]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 10.11.08 17:12
Оценка:
Здравствуйте, Amor, Вы писали:

LT>>Сам вешай хук WH_GETMESAGE и доложи о результате.

A>ок. завтра уже попробую.

Вешай быстрей, завтра может быть не до этого
WH_GETMESSAGE, sorry.
--
С уважением, LVT
Re[8]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 11.11.08 08:14
Оценка:
Здравствуйте, 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.

Чего-то я накосячил.
http://msdn.microsoft.com/en-us/library/ms632630(VS.85).aspx
The WM_INPUTLANGCHANGEREQUEST message is posted to the window with the focus when
the user chooses a new input language

С этим я согласен, блокнот и собс-ручное приложение ведут себя именно так (XP, 2003)

А вот здесь:
http://msdn.microsoft.com/en-us/library/ms632629(VS.85).aspx
The WM_INPUTLANGCHANGE message is sent to the topmost affected window after
an application's input language has been changed.

накосячил MS, бо пример того же блокнота и собс-ручного приложения
демонстрирует, что сообщение получает окно в фокусе (XP, 2003)
--
С уважением, LVT
Re[2]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 11.11.08 08:30
Оценка:
Здравствуйте, Amor, Вы писали:

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

A>Т.е. предположительно трабла в том, что моё приложение каким-то образом перехватывает Ctrl+Shift... И если так, то основной вопрос — как это можно выяснить? Приложение большое, я пересмотрел все PreTranslateMessage, все обработчики WM_KEYDOWN/UP.

А хоткеи?
Не показывает ли spy на твоем приложении WM_HOTKEY при нажатии волшебных клавиш?
Или WM_COMMAND, если это акселератор.
--
С уважением, LVT
Re[9]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 14.11.08 13:10
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Сам вешай хук WH_GETMESAGE и доложи о результате.

Сори, заболел, не смог на след. день все проверить
Сделал следующее
LRESULT CALLBACK GetMsgProc(          int code,
                            WPARAM wParam,
                            LPARAM lParam
)
{
     PMSG pmsg = ( PMSG ) lParam;
     if ( pmsg->message == WM_INPUTLANGCHANGEREQUEST || pmsg->message == WM_INPUTLANGCHANGE )
     {
          TRACE( _T("GetMsgProc( WM_INPUTLANGCHANGE %d )\n"), pmsg->message );
     }

     return CallNextHookEx( NULL, code, wParam, lParam );
}


Ну и в начале приложения воткнул вызов:

     HHOOK hk = ::SetWindowsHookEx( WH_GETMESSAGE, GetMsgProc, m_hInstance, ::GetCurrentThreadId() );
     ASSERT( hk );


Итог: сообщение WM_INPUTLANGCHANGEREQUEST в поток не поступают!
Я думаю, это и спай отлично показал, он же сам хуки вешает...
Re[10]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 14.11.08 13:44
Оценка:
Здравствуйте, Amor, Вы писали:

A>Я думаю, это и спай отлично показал, он же сам хуки вешает...


С этим, считай, разобрались.

Теперь натрави spy на свое приложение.
Что происходит при нажатии переключателя?

См. также http://rsdn.ru/forum/message/3171013.1.aspx
Автор: Leonid Troyanovsky
Дата: 11.11.08
--
С уважением, LVT
Re[11]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 14.11.08 13:52
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:

LT>Что происходит при нажатии переключателя?


Протокол spy — в студию.
--
С уважением, LVT
Re[11]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 17.11.08 14:30
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Теперь натрави spy на свое приложение.
LT>Что происходит при нажатии переключателя?

Подцепил spy к гавнлому потоку приложения:


<01869> 00010CD6 P WM_KEYDOWN nVirtKey:VK_CONTROL cRepeat:1 ScanCode:1D fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<01870> 00010CD6 S WM_GETDLGCODE
<01871> 00010CD6 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_HASSETSEL | DLGC_WANTCHARS
<01872> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01873> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01874> 00010CC6 S TVM_GETITEM pitem:0012F87C
<01875> 00010CC6 R TVM_GETITEM fSucceeded:True
<01876> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01877> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01878> 00010CC6 S TVM_GETITEM pitem:0012F850
<01879> 00010CC6 R TVM_GETITEM fSucceeded:True
<01880> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01881> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01882> 00010CC6 S TVM_GETITEM pitem:0012F8CC
<01883> 00010CC6 R TVM_GETITEM fSucceeded:True
<01884> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01885> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01886> 00010CC6 S TVM_GETITEM pitem:0012F894
<01887> 00010CC6 R TVM_GETITEM fSucceeded:True
<01888> 00010EEA S WM_GETDLGCODE
<01889> 00010EEA R WM_GETDLGCODE fuDlgCode:DLGC_STATIC
<01890> 00010CD6 P message:0x0118 [Unknown] wParam:0000FFFF lParam:BF8C399C
<01891> 00010CD6 P WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<01892> 00010CD6 S WM_GETDLGCODE
<01893> 00010CD6 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_HASSETSEL | DLGC_WANTCHARS
<01894> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01895> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01896> 00010CC6 S TVM_GETITEM pitem:0012F87C
<01897> 00010CC6 R TVM_GETITEM fSucceeded:True
<01898> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01899> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01900> 00010CC6 S TVM_GETITEM pitem:0012F850
<01901> 00010CC6 R TVM_GETITEM fSucceeded:True
<01902> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01903> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01904> 00010CC6 S TVM_GETITEM pitem:0012F8CC
<01905> 00010CC6 R TVM_GETITEM fSucceeded:True
<01906> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01907> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01908> 00010CC6 S TVM_GETITEM pitem:0012F894
<01909> 00010CC6 R TVM_GETITEM fSucceeded:True
<01910> 00010EEA S WM_GETDLGCODE
<01911> 00010EEA R WM_GETDLGCODE fuDlgCode:DLGC_STATIC
<01912> 00010CD6 P WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:2 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:0
<01913> 00010CD6 S WM_GETDLGCODE
<01914> 00010CD6 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_HASSETSEL | DLGC_WANTCHARS
<01915> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01916> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01917> 00010CC6 S TVM_GETITEM pitem:0012F87C
<01918> 00010CC6 R TVM_GETITEM fSucceeded:True
<01919> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01920> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01921> 00010CC6 S TVM_GETITEM pitem:0012F850
<01922> 00010CC6 R TVM_GETITEM fSucceeded:True
<01923> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01924> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01925> 00010CC6 S TVM_GETITEM pitem:0012F8CC
<01926> 00010CC6 R TVM_GETITEM fSucceeded:True
<01927> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01928> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01929> 00010CC6 S TVM_GETITEM pitem:0012F894
<01930> 00010CC6 R TVM_GETITEM fSucceeded:True
<01931> 00010EEA S WM_GETDLGCODE
<01932> 00010EEA R WM_GETDLGCODE fuDlgCode:DLGC_STATIC
<01933> 00010CD6 P message:0x0118 [Unknown] wParam:0000FFFF lParam:BF8C399C
<01934> 00010CD6 P WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:0
<01935> 00010CD6 S WM_GETDLGCODE
<01936> 00010CD6 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_HASSETSEL | DLGC_WANTCHARS
<01937> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01938> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01939> 00010CC6 S TVM_GETITEM pitem:0012F87C
<01940> 00010CC6 R TVM_GETITEM fSucceeded:True
<01941> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01942> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01943> 00010CC6 S TVM_GETITEM pitem:0012F850
<01944> 00010CC6 R TVM_GETITEM fSucceeded:True
<01945> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01946> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01947> 00010CC6 S TVM_GETITEM pitem:0012F8CC
<01948> 00010CC6 R TVM_GETITEM fSucceeded:True
<01949> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01950> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01951> 00010CC6 S TVM_GETITEM pitem:0012F894
<01952> 00010CC6 R TVM_GETITEM fSucceeded:True
<01953> 00010EEA S WM_GETDLGCODE
<01954> 00010EEA R WM_GETDLGCODE fuDlgCode:DLGC_STATIC
<01955> 00010CD6 P WM_KEYUP nVirtKey:VK_CONTROL cRepeat:1 ScanCode:1D fExtended:0 fAltDown:0 fRepeat:1 fUp:1
<01956> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01957> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01958> 00010CC6 S TVM_GETITEM pitem:0012F87C
<01959> 00010CC6 R TVM_GETITEM fSucceeded:True
<01960> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01961> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01962> 00010CC6 S TVM_GETITEM pitem:0012F850
<01963> 00010CC6 R TVM_GETITEM fSucceeded:True
<01964> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01965> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01966> 00010CC6 S TVM_GETITEM pitem:0012F8CC
<01967> 00010CC6 R TVM_GETITEM fSucceeded:True
<01968> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01969> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01970> 00010CC6 S TVM_GETITEM pitem:0012F894
<01971> 00010CC6 R TVM_GETITEM fSucceeded:True
<01972> 00010EEA S WM_GETDLGCODE
<01973> 00010EEA R WM_GETDLGCODE fuDlgCode:DLGC_STATIC
<01974> 00010CD6 P WM_KEYUP nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
<01975> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01976> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01977> 00010CC6 S TVM_GETITEM pitem:0012F87C
<01978> 00010CC6 R TVM_GETITEM fSucceeded:True
<01979> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01980> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01981> 00010CC6 S TVM_GETITEM pitem:0012F850
<01982> 00010CC6 R TVM_GETITEM fSucceeded:True
<01983> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01984> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01985> 00010CC6 S TVM_GETITEM pitem:0012F8CC
<01986> 00010CC6 R TVM_GETITEM fSucceeded:True
<01987> 00010CC6 S TVM_GETNEXTITEM flag:TVGN_CARET hitem:00000000
<01988> 00010CC6 R TVM_GETNEXTITEM hItem:0022D130
<01989> 00010CC6 S TVM_GETITEM pitem:0012F894
<01990> 00010CC6 R TVM_GETITEM fSucceeded:True
<01991> 00010EEA S WM_GETDLGCODE
<01992> 00010EEA R WM_GETDLGCODE fuDlgCode:DLGC_STATIC
<01993> 00010CD6 P message:0x0118 [Unknown] wParam:0000FFFF lParam:BF8C399C
<01994> 00010CD6 P message:0x0118 [Unknown] wParam:0000FFFF lParam:BF8C399C
<01995> 00010CD6 P message:0x0118 [Unknown] wParam:0000FFFF lParam:BF8C399C
<01996> 00010CD6 P message:0x0118 [Unknown] wParam:0000FFFF lParam:BF8C399C
<01997> 00010CD6 P message:0x0118 [Unknown] wParam:0000FFFF lParam:BF8C399C
<01998> 00010CD6 P message:0x0118 [Unknown] wParam:0000FFFF lParam:BF8C399C
<01999> 00010CD6 P message:0x0118 [Unknown] wParam:0000FFFF lParam:BF8C399C
<02000> 00010CBE S WM_NCACTIVATE fActive:False
<02001> 00010CBE R WM_NCACTIVATE fDeactivateOK:True
<02002> 00010CBE S WM_ACTIVATE fActive:WA_INACTIVE fMinimized:False hwndPrevious:(null)
<02003> 00010CBE S .WM_ACTIVATETOPLEVEL fActive:False dwThreadID:0012FB34
<02004> 00020CB8 S ..TTM_ACTIVATE Activate:False
<02005> 00020CB8 R ..TTM_ACTIVATE
<02006> 00010CBE R .WM_ACTIVATETOPLEVEL
<02007> 00010CBE S .WM_NCACTIVATE fActive:False
<02008> 00010CBE R .WM_NCACTIVATE fDeactivateOK:True
<02009> 00010CD8 S .WM_FLOATSTATUS wFloatState:FS_DEACTIVATE
<02010> 00010CD8 R .WM_FLOATSTATUS
<02011> 00010CC0 S .WM_FLOATSTATUS wFloatState:FS_DEACTIVATE
<02012> 00010CC0 R .WM_FLOATSTATUS
<02013> 00020CB8 S .WM_FLOATSTATUS wFloatState:FS_DEACTIVATE
<02014> 00020CB8 R .WM_FLOATSTATUS
<02015> 00010CC8 S .WM_FLOATSTATUS wFloatState:FS_DEACTIVATE
<02016> 00010CC8 R .WM_FLOATSTATUS
<02017> 00010CBE S .WM_FLOATSTATUS wFloatState:FS_DEACTIVATE
<02018> 00010CBE R .WM_FLOATSTATUS
Re[12]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 17.11.08 17:34
Оценка:
Здравствуйте, Amor, Вы писали:

A>Подцепил spy к гавнлому потоку приложения:


А что за код вызывается при каждом нажатии и отжатии клавиши?
Нет ли среди него к.л. PeekMessage?

А что получается если использовать Alt+Shift для переключения?
--
С уважением, LVT
Re[13]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 18.11.08 08:57
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>А что за код вызывается при каждом нажатии и отжатии клавиши?

Там обновляется содержимое дерева, рядом с которым расположен этот edit (вернее ввод осуществлялся в combo)

LT>Нет ли среди него к.л. PeekMessage?


Врядли, но даже если б был, то это не дало б ответ на вопрос, почему WM_INPUTLANGCHANGEREQUEST вообще не попадает в очередь сообщений.

LT>А что получается если использовать Alt+Shift для переключения?


Внешне тоже самое. Раскладка не переключается. Более глубокого анализа не проводил...
Re[14]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 18.11.08 11:42
Оценка:
Здравствуйте, Amor, Вы писали:

A>Врядли, но даже если б был, то это не дало б ответ на вопрос, почему WM_INPUTLANGCHANGEREQUEST вообще не попадает в очередь сообщений.


Оно и не генерируется.
Т.е., в момент WM_KEYUP один из WM_KEYDOWN уже кто-то "съел".
--
С уважением, LVT
Re[14]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 18.11.08 11:46
Оценка:
Здравствуйте, Amor, Вы писали:

A>Внешне тоже самое. Раскладка не переключается. Более глубокого анализа не проводил...


А как ведет себя все это хозяйство в обычном окне, не в диалоге?
--
С уважением, LVT
Re[15]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Amor Россия  
Дата: 20.11.08 12:19
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>А как ведет себя все это хозяйство в обычном окне, не в диалоге?

Что имеется ввиду под обычным окном? Это все происходит в главном окне приложения...
Структура окон такая:

Фрейм
     Сплиттер
           Левая форма
           Правая форма
Re[16]: Не приходит сообщение WM_INPUTLANGCHANGEREQUEST
От: Leonid Troyanovsky  
Дата: 20.11.08 15:08
Оценка:
Здравствуйте, Amor, Вы писали:

A>Что имеется ввиду под обычным окном? Это все происходит в главном окне приложения...


А откуда же в логе WM_GETDLGCODE?
IsDialogMessage вызываем?
--
С уважением, LVT
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.