win32汇编--加载对话框资源

应用程序可以弹出一个窗口,就像之前通过一系统列步骤来完成一个窗口的显示,同样的,应用程序

也可以弹出一个对话框,对话框通过资源文件来实现,然后在程序中调用DialogBoxParam()来加载

该对话框

下面是源代码(完整工程下载)

  1. .386  
  2.   
  3. .model flat,stdcall  
  4.   
  5. option casemap:none  
  6.   
  7.   
  8.   
  9. include windows.inc  
  10.   
  11. include kernel32.inc  
  12.   
  13. include user32.inc  
  14.   
  15. include debug.inc  
  16.   
  17. includelib kernel32.lib  
  18.   
  19. includelib user32.lib  
  20.   
  21. includelib debug.lib  
  22.   
  23.   
  24.   
  25. .data?  
  26.   
  27.     hInstance       dd  ?  
  28.   
  29. .const  
  30.   
  31.     IDD_DLG_MAIN    EQU 1000  
  32.   
  33. .code  
  34.   
  35.     _ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam  
  36.   
  37.         mov eax,wMsg  
  38.   
  39.         .if eax==WM_CLOSE  
  40.   
  41.             invoke EndDialog,hWnd,NULL  
  42.   
  43.         .elseif eax==WM_INITDIALOG  
  44.   
  45.         .elseif eax==WM_COMMAND  
  46.   
  47.             mov eax,wParam  
  48.   
  49.             movzx eax,ax  
  50.   
  51.             .if eax==IDOK  
  52.   
  53.                 invoke EndDialog,hWnd,NULL  
  54.   
  55.             .endif  
  56.   
  57.         .else  
  58.   
  59.             mov eax,FALSE  
  60.   
  61.             ret  
  62.   
  63.         .endif  
  64.   
  65.         mov eax,TRUE  
  66.   
  67.         ret  
  68.   
  69.     _ProcDlgMain endp  
  70.   
  71.     ;=========================================================  
  72.   
  73.     start:  
  74.   
  75.         invoke GetModuleHandle,NULL  
  76.   
  77.         mov hInstance,eax  
  78.   
  79.         invoke DialogBoxParam,hInstance,IDD_DLG_MAIN,NULL,\  
  80.   
  81.                 offset _ProcDlgMain,NULL  
  82.   
  83.         invoke ExitProcess,NULL  
  84.   
  85.     end start  
  86.   
  87.       
  88.   
  89.       
  90.   
  91.       

你可能感兴趣的:(Win32)