Привет!
Прошу прощения, наверное, избитая тема, но никак не "разгрызается". Поиск в ответ дал единственную тему про .NET, который для меня пока еще слишком сложен.
Работа идет в чистом Win API, никаких MFC или Дотнетов. В своей DLL'ке я делаю вызов диалога "About":
DialogBox(UtilsR2_hModule, MAKEINTRESOURCE(IDD_DIALOG_Main), *pMainProgInterf->phMainWindow, (DLGPROC)About_Main_proc);
Этот диалог показывает версию программы, перечисляет подключенные модули, другую вспомогательную информацию, - в общем, обычная рутина. Мне хотелось бы при нажатии клавиши 'H' вызвать другой диалог с описанием "железа" (ну там версии прошивок и т.п.). Для этого в диалоге "About" я ловлю WM_NOTIFY. Определил, что клавиши опознаются по LVN_KEYDOWN (у меня в "About" несколько статичных строк и список присоединенных модулей в виде листбокса).
Но когда я точно так же поступаю во втором диалоге, вызванном из первого, (в том, который про описание "железа") - никаких WM_NOTIFY я вообще не вижу! Т.е. в первом диалоге (пока не вызван второй диалог) я еще вижу что-то типа:
[40.18839] WM_NOTIFY: Control = 1001, hwndFrom = 00020A24, idFrom = 1001, code = -155
[40.18858] LVN_KEYDOWN
А во втором - вообще тишина...
Хотел спросить: как же все-таки добраться до цикла сообщений диалогового окна? Моя процедура диалога получает только какие-то остаточные сообщения. Я пробовал применить SetWindowLong на окне диалога - получил в точности те же сообщения, что и диалоговая процедура (что для меня совершенно непонятно: ведь процедура окна должна получить все, что этому окну посылается!).
Что делать, друзья?! Как мне добраться до очереди сообщений диалога, чтобы узнать, что пользователь нажал злосчастную клавишу 'ESC'?
![Улыбаюсь](/Smileys/test/smile.gif)
Идеалом было бы получение аналога PreTranslateMessage из MFC.
Спасибо!
P.S. Да, забыл сказать, я пробовал в качестве родительского окна (который *pMainProgInterf->phMainWindow) использовать NULL. Эффект тот же самый. Т.е. нулевой...