Следующий код работает только если закомментировать CLASS в файле ресурсов, или убрать ; с DefWindowProc и возвращать TRUE вместо FALSE в процедуре окна. Вот не догоняю я где логика: Если msg не обрабатывается, то возвращаю FALSE. Что не так?! Но почему то это не катит. До того как в код была добавлена регистрация класса всё нормально работало, и была понятна логика этой работы. Подскажите, плиз - как всё это сделать грамотно? Ещё непонятка: почему не работает с DefDlgProc? dialog.asm Код (Text): mov wc.lpfnWndProc, OFFSET MyDialogProc <skip> invoke RegisterClassEx, ADDR wc invoke CreateDialogParam, hInst, MainDialogID, NULL, ADDR MyDialogProc, NULL or eax, eax <> MyDialogProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .IF uMsg==WM_INITDIALOG mov eax, FALSE ; User can manual set focus .ELSEIF uMsg==WM_DESTROY invoke PostQuitMessage, 0 ; Terminate thread and return 0 as exit code mov eax, TRUE .ELSEIF uMsg==WM_COMMAND mov eax, TRUE .ELSEIF uMsg==WM_CLOSE invoke DestroyWindow, hWnd mov eax, TRUE .ELSE ;;;; invoke DefWindowProc, hWnd, uMsg, wParam, lParam ;;;; invoke DefDlgProc, hWnd, uMsg, wParam, lParam mov eax, FALSE .ENDIF ret MyDialogProc endp dialog.rc Код (Text): MainDialogID DIALOGEX 0, 0, 200, 100 STYLE WS_VISIBLE | DS_CENTER | DS_SHELLFONT | WS_SYSMENU CAPTION "Modeless Dialog Box" CLASS "ModelessDialogClass" FONT 12, "MS Shell Dlg" BEGIN END PS. Не встречалось ли кому подробное описание работы диалоговых окон, особенно в том случае когда они используются как основное? Туторы Iczelion'а читал разумеется, но у него про сабж как то жидковато, имхо...
ALLeX Ну, не настолько у него "жидковато", код вроде вашего это уже слишком Посмотрите http://www.wasm.ru/forum/viewtopic.php?id=27477 .
kero Спасибо. По ссылке нашел много интересного. Но решения так и не нашел пока - подробнее в вашей ветке http://www.wasm.ru/forum/viewtopic.php?id=27477