Может про это уже писалось, но я не нашёл. У меня диалоговое окно как основное. Как вызвать модальное диалоговое окно? Если я просто вызываю окно так: Код (Text): invoke DialogBoxParam,hInstance,ID_ABOUT_DLG,hWin,addr ADlgProc,0 окно не появляется, а в OllyDbg написано что LastError ERROR_CANNOT_FIND_WND_CLASS. В Microsoft Spy++ пишется, что класс #32770. Пробовал менять класс в ресурсе при помощи CLASS "MAIN_DLG_CLASS", но это не работает. Что делать,
В AIMTrnADlg.rc есть такой прикол: > CLASS "ABOUT_DPX_DLG" Чтоб это работало нужно сначала зарегистрировать класс ABOUT_DPX_DLG! Я просто убрал эту строчку из обоих шаблонов и окошко сразу появилось.
теперь rc`ха выглядит так: #define ID_ABOUT_DLG 2001 #define ID_A_CLOSE 2002 #define ID_A_ABOUT_MES 2003 ID_ABOUT_DLG DIALOGEX 0,0,244,110 CAPTION "About" FONT 5,"MS Sans Serif",0,0,204 STYLE 0x10c80400 EXSTYLE 0x00020080 BEGIN CONTROL "ОК",ID_A_CLOSE,"Button",0x50018000,223,31,17,12,0x00000000 CONTROL "",ID_A_ABOUT_MES,"Edit",0x58210084,0,43,241,55,0x00000200 END но ошибка по прежнему появляется. Кстати, что ты имел в виду "из обоих шаблонов"?
DPX Сорсы из аттача содержали синтаксические ошибки, т.е., очевидно, вы приаттачили не совсем то, что компилировали. Давайте тогда экзешник. То, что их двое: главное окно и about.
ресурсы поправил - то же самое. да, я вырезал из сорцов ресурс с битмапом и обнулил адреса (мало ли кто скачает! ). А во всём остальном - то же самое. екзешник - прикрепляю.
так, сейчас перезапустил IDE, скомпилил заново, и всё поехало! Спасибо за разъяснение насчёт класса, что-то из головы вылетело
DPX Но глюков всё равно много... В диалоге не работает кнопка OK, т.к. её ID отличается в RC и INC. Картинка не загружается, т.к. hBack хранится в локальной переменной. В диалогах нужно обрабатывать WM_INITDIALOG, вместо WM_CREATE (это тоже в about).