Привет!
Прошу прощения, наверное, избитая тема, но никак не "разгрызается". Поиск в ответ дал единственную тему про .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'?
Идеалом было бы получение аналога PreTranslateMessage из MFC.
Спасибо!
P.S. Да, забыл сказать, я пробовал в качестве родительского окна (который *pMainProgInterf->phMainWindow) использовать NULL. Эффект тот же самый. Т.е. нулевой...