Не могу установить иконку в DialogBoxParam

Тема в разделе "WASM.BEGINNERS", создана пользователем b1oLoG, 7 ноя 2008.

  1. b1oLoG

    b1oLoG New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2008
    Сообщения:
    2
    Адрес:
    binary cod
    простите за ламмерский вопрос,но как ни старался ничего не получается,посылаю сообщение WM_SETICON для установки иконки на диалоговое окно но ничего не выходит,компилю в masm32 by hutch

    вот исходник:
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. include \masm32\include\windows.inc
    6. include \masm32\include\user32.inc
    7. include \masm32\include\kernel32.inc
    8. includelib \masm32\lib\user32.lib
    9. includelib \masm32\lib\kernel32.lib
    10.  
    11. DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
    12.  
    13. .data
    14. DlgName db "MyDialog",0
    15. AppName db "Our Second Dialog Box",0
    16. TestString db "Wow! I'm in an edit box now",0
    17.  
    18. .data?
    19. hInstance HINSTANCE ?
    20. CommandLine LPSTR ?
    21. buffer db 512 dup(?)
    22.  
    23. .const
    24. IDC_EDIT        equ 3000
    25. IDC_BUTTON      equ 3001
    26. IDC_EXIT        equ 3002
    27. IDM_GETTEXT     equ 32000
    28. IDM_CLEAR       equ 32001
    29. IDM_EXIT        equ 3200
    30.  
    31. .code
    32. start:
    33.     invoke GetModuleHandle, NULL
    34.     mov    hInstance,eax
    35.     invoke DialogBoxParam, hInstance, ADDR DlgName,NULL,addr DlgProc,NULL
    36.     invoke ExitProcess,eax
    37.  
    38. DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    39.     .IF uMsg==WM_INITDIALOG
    40.                 invoke LoadIcon,hWnd,IDI_APPLICATION   
    41.                 invoke SendMessage, hWnd,WM_SETICON,0,eax
    42.         invoke GetDlgItem, hWnd,IDC_EDIT
    43.         invoke SetFocus,eax
    44.     .ELSEIF uMsg==WM_CLOSE
    45.         invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0
    46.     .ELSEIF uMsg==WM_COMMAND
    47.         mov eax,wParam
    48.         .IF lParam==0
    49.             .IF ax==IDM_GETTEXT
    50.                 invoke GetDlgItemText,hWnd,IDC_EDIT,ADDR buffer,512
    51.                 invoke MessageBox,NULL,ADDR buffer,ADDR AppName,MB_OK
    52.             .ELSEIF ax==IDM_CLEAR
    53.                 invoke SetDlgItemText,hWnd,IDC_EDIT,NULL
    54.             .ELSEIF ax==IDM_EXIT
    55.                 invoke EndDialog, hWnd,NULL
    56.             .ENDIF
    57.         .ELSE
    58.             mov edx,wParam
    59.             shr edx,16
    60.             .if dx==BN_CLICKED
    61.                 .IF ax==IDC_BUTTON
    62.                     invoke SetDlgItemText,hWnd,IDC_EDIT,ADDR TestString
    63.                         .ELSEIF ax==IDC_EXIT
    64.                     invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0
    65.                 .ENDIF
    66.             .ENDIF
    67.         .ENDIF
    68.     .ELSE
    69.         mov eax,FALSE
    70.         ret
    71.     .ENDIF
    72.     mov eax,TRUE
    73.     ret
    74. DlgProc endp
    75. end start
    заранее очень благодарен за помощь!)
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    b1oLoG
    Что возвращает LoadIcon? Почему ее первый параметр hwnd?
     
  3. b1oLoG

    b1oLoG New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2008
    Сообщения:
    2
    Адрес:
    binary cod
    q_q
    спс огромное тебе,когда вызываю так invoke LoadIcon,NULL,IDI_APPLICATION отображается с иконкой,забыл что когда используется системные иконки надо ставить в первом параметре NULL
     
  4. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    b1oLoG
    А когда не системные - Instance модуля, в котором ресурсы этих иконок, но никак не хендл окна...