00401125 E8 0E000000 call <jmp.&user32.DialogBoxParamA> ; \DialogBoxParamA
0040112A 6A 00 push 0 ;下断点处
0040112C E8 25000000 call <jmp.&kernel32.ExitProcess> ; \ExitProcess
00401131 C3 retn
;DialogBoxParam调用后马上返回,不知道怎么回事(也就是说对话框还没有创建就结束了),如果在对话框资源定义中去掉MENU IDM_MAIN
就可以显示,但是没有菜单啊,平时其他的对话框程序我就是用这种方法来创建菜单的,现在这个程序不知道怎么
回事,我用了2个小时去调试也找不到错误原因。
源码: 直接可以编译连接
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
include comdlg32.inc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DLL导入库
includelib user32.lib
includelib kernel32.lib
includelib comdlg32.lib
include comctl32.inc
includelib comctl32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>资源文件等值定义
IDD_DLG_MAIN equ 0001h
IDM_MAIN equ 2000h
IDC_STATUS equ 0002h
IDC_EDT1 equ 0003h
IDM_OPEN equ 1101h
IDM_SAVEAS equ 1102h
IDM_PAGESETUP equ 1103h
IDM_EXIT equ 1104h
IDM_FIND equ 1201h
IDM_REPLACE equ 1202h
IDM_SELFONT equ 1203h
IDM_SELCOLOR equ 1204h
IDM_MENUHELP equ 1300h
.data
hInstance dword ?
hWinMain dword ?
hWinStatus dword ?
hWinEdit dword ?
dwStatusWidth dword 60,140,172,-1
szFormat1 byte "%02d:%02d:%02d",0 ;时间格式化输出
szFormat2 byte "字节数: %d",0
szStr1 byte "插入",0
szStr2 byte "改写",0
dwMenuHelp dword 0,IDM_MENUHELP,0,0
.code
;**********************************************************************
;对话框窗口过程
;**********************************************************************
ProcDlgMain proc uses ebx esi edi hWnd,uMsg,wParam,lParam
LOCAL @szBuffer[256]:byte
LOCAL @stPos:POINT
LOCAL @stST:SYSTEMTIME
mov eax,uMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax == WM_INITDIALOG
mov eax,hWnd
mov hWinMain,eax
invoke GetDlgItem,hWnd,IDC_STATUS
mov hWinStatus,eax
invoke GetDlgItem,hWnd,IDC_EDT1
mov hWinEdit,eax
invoke SendMessage,hWinStatus,SB_SETPARTS,4,offset dwStatusWidth
invoke SendMessage,hWinStatus,SB_SETTEXT,2,offset szStr1
; invoke ShowWindow,hWinMain,SW_SHOW
; call _Resize
invoke SetTimer,hWnd,1,300,NULL