Диалог (как основное окно) и регистрация класса

Тема в разделе "WASM.WIN32", создана пользователем ALLeX, 26 фев 2009.

  1. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    Следующий код работает только если закомментировать CLASS в файле ресурсов, или убрать ; с DefWindowProc и возвращать TRUE вместо FALSE в процедуре окна.
    Вот не догоняю я где логика: Если msg не обрабатывается, то возвращаю FALSE. Что не так?! Но почему то это не катит. :dntknw: До того как в код была добавлена регистрация класса всё нормально работало, и была понятна логика этой работы. Подскажите, плиз - как всё это сделать грамотно? Ещё непонятка: почему не работает с DefDlgProc?

    dialog.asm
    Код (Text):
    1. mov wc.lpfnWndProc, OFFSET MyDialogProc
    2. <skip>
    3. invoke  RegisterClassEx, ADDR wc
    4. invoke  CreateDialogParam, hInst, MainDialogID, NULL, ADDR MyDialogProc, NULL
    5. or eax, eax
    6. <>
    7. MyDialogProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    8.     .IF uMsg==WM_INITDIALOG
    9.         mov eax, FALSE      ; User can manual set focus
    10.     .ELSEIF uMsg==WM_DESTROY
    11.         invoke PostQuitMessage, 0   ; Terminate thread and return 0 as exit code
    12.         mov eax, TRUE
    13.     .ELSEIF uMsg==WM_COMMAND
    14.         mov eax, TRUE
    15.     .ELSEIF uMsg==WM_CLOSE
    16.         invoke DestroyWindow, hWnd
    17.         mov eax, TRUE
    18.     .ELSE
    19. ;;;;        invoke DefWindowProc, hWnd, uMsg, wParam, lParam
    20. ;;;;        invoke DefDlgProc, hWnd, uMsg, wParam, lParam
    21.          mov eax, FALSE
    22.     .ENDIF
    23.     ret
    24. MyDialogProc endp
    dialog.rc
    Код (Text):
    1. MainDialogID DIALOGEX 0, 0, 200, 100
    2. STYLE WS_VISIBLE | DS_CENTER | DS_SHELLFONT | WS_SYSMENU
    3. CAPTION "Modeless Dialog Box"
    4. CLASS "ModelessDialogClass"
    5. FONT 12, "MS Shell Dlg"
    6. BEGIN
    7. END
    PS.
    Не встречалось ли кому подробное описание работы диалоговых окон, особенно в том случае когда они используются как основное? Туторы Iczelion'а читал разумеется, но у него про сабж как то жидковато, имхо...
     
  2. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    ALLeX
    Ну, не настолько у него "жидковато", код вроде вашего это уже слишком :)

    Посмотрите http://www.wasm.ru/forum/viewtopic.php?id=27477
    .
     
  3. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    kero
    Спасибо. По ссылке нашел много интересного. Но решения так и не нашел пока - подробнее в вашей ветке http://www.wasm.ru/forum/viewtopic.php?id=27477
     
  4. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    ALLeX, там и ответил.