Диалоговое окно из ресурсов, почему не работает???

Тема в разделе "WASM.WIN32", создана пользователем xamlo, 10 дек 2005.

  1. xamlo

    xamlo New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    7
    Адрес:
    Russia
    диалоговое окно не появляется, точнее вызов WndProc, почему-то не происходит. Подскажите, что не так. Вот код:
    Код (Text):
    1.         .386
    2.         .model flat, stdcall
    3.         option casemap :none   ; case sensitive
    4.  
    5. ; ###################################################################### ###
    6.  
    7.         include \masm32\include\kernel32.inc
    8.         include \masm32\include\windows.inc
    9.         include \masm32\include\user32.inc
    10.         include \masm32\include\shell32.inc
    11.         include \masm32\include\comdlg32.inc
    12.         include \masm32\include\comctl32.inc
    13.  
    14.         includelib \masm32\lib\user32.lib
    15.         includelib \masm32\lib\kernel32.lib
    16.         includelib \masm32\lib\shell32.lib
    17.         includelib \masm32\lib\comdlg32.lib
    18.         includelib \masm32\lib\comctl32.lib
    19.  
    20. ; ###################################################################### ###
    21.  
    22.         .const
    23.                 IDDLG           egu     1
    24.                 IDBUT1          equ     102
    25.                 IDBUT2          equ     103
    26.                 IDEDIT          equ     1045
    27.                 IDTEXT          equ     105
    28.  
    29.         .data?
    30.                 hInstance       dd      ?
    31.                 hBut1           dd      ?
    32.                 hBut2           dd      ?
    33.                 hEdit           dd      ?
    34.                 hText           dd      ?
    35.                 hWinMain        dd      ?
    36.  
    37.         .data
    38.                 szMenu          db      "#1",0
    39.                 szAbout         db      "About",0
    40.  
    41.  
    42.         .code
    43.  
    44.  
    45.  
    46.  
    47.  
    48.  
    49.  
    50.  
    51. ; ---------------------------------------------------------------------- -----
    52.  
    53.  
    54.  
    55. start:
    56. jmp @prg
    57. WndProc PROC uses esi edi hWin: DWORD, uMsg: DWORD, wParam: DWORD, lParam: DWORD
    58.         LOCAL   pt: POINT
    59. invoke MessageBox,0,offset szMenu,offset szAbout,0
    60.         .IF     uMsg == WM_INITDIALOG
    61.                 mov     edi, hWin
    62.                 mov     hWinMain, edi
    63.  
    64.                 invoke  LoadIcon, hInstance, offset szMenu
    65.                 invoke  SendMessage, edi, WM_SETICON, 1, eax
    66.  
    67.                 invoke  GetDlgItem, edi, IDBUT1
    68.                 mov     hBut1, eax
    69.  
    70.  
    71.                 invoke  GetDlgItem, edi, IDBUT1
    72.                 mov     hBut2, eax
    73.  
    74.  
    75.                 invoke  GetDlgItem, edi, IDEDIT
    76.                 mov     hEdit, eax
    77.  
    78.  
    79.                 invoke  GetDlgItem, edi, IDTEXT
    80.                 mov     hText, eax
    81.  
    82.                 invoke MessageBox,0,offset szMenu,offset szAbout,0
    83.  
    84.  
    85.         .ELSEIF uMsg == WM_CLOSE
    86. @close_dlg:
    87.                 invoke EndDialog, hWinMain, 0
    88.         .ENDIF
    89.         invoke MessageBox,0,offset szMenu,offset szAbout,0
    90.         xor     eax, eax
    91.         ret
    92. WndProc endp
    93. @prg:
    94.         xor eax,eax
    95.         invoke  GetModuleHandle, NULL
    96.         mov     hInstance, eax
    97.  
    98.         invoke  DialogBoxParam, eax, IDDLG, 0, offset WndProc, 0
    99.  
    100.         invoke MessageBox,0,offset szMenu,offset szMenu,0
    101.         invoke  ExitProcess, 0
    102.  
    103.  
    104. end start
     
  2. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    а сам диалог? случаем не надо вызывать InitCommonControls?(или что то похожее, точно не помню).

    и на GetLastError не мешало бы взглянуть.
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    А отладчиком пользовался?



    А MessageBox в диалоговой процедуре - это сильно, конечно.
     
  4. xamlo

    xamlo New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    7
    Адрес:
    Russia
    MessageBox для отладки и был создан. Ощибку нашел, отладчик помог. Ошибка была в самом ресурсе окна. там стояло WS_CHILD. Вот кстати вся прога, с диалоговым окном вмете.
     
  5. Twilight

    Twilight New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    6


    А вот в ресурсах это дело (IDDG) немного по-другому называется у тебя... Может из-за этого? MASM'а нет проверить негде
     
  6. xamlo

    xamlo New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    7
    Адрес:
    Russia
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    основная бага была в кривых ресурсах, такое ощущение

    что .rc набивали руками



    в этих строчках что-то не то

    EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_APPWINDOW

    STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | WS_CAPTION | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_VSCROLL | WS_SYSMENU



    в аттаче то что получилось

    [​IMG] 1745627809__window.rar