首页 > 汇编语言 > 汇编语言MS-Windows编程
阅读:5,349
汇编语言MessageBoxA函数:显示消息框
Win32 应用程序生成输岀的一个最简单的方法就是调用 MessageBoxA 函数:
Smallwin.inc 将 MessageBoxA 重定义为 MessageBox,这个名字看上去具有更强的用户友好性。
如果想要消息框窗口浮动于桌面所有其他窗口之上,就在传递的最后一个参数(uType 参数)值上添加 MB_SYSTEMMODAL 选项。
第二个函数调用显示一个问号图标以及 Yes/No 按钮。如果用户选择 Yes 按钮,则程序利用返回值选择一个操作:
第三个函数调用显示一个信息图标以及三个按钮:
第四个函数调用显示一个停止图标和一个 OK 按钮:
MessageBoxA PROTO,
hWnd:DWORD, ;窗口句柄(可以为空)
lpText:PTR BYTE, ;字符串,对话框内
lpCaption:PTR BYTE, ;字符串,对话框标题
uType:DWORD ;内容和行为
内容和行为
uType 参数包含的位图整数组合了三种选项:显示按钮、图标和默认按钮选择。几种可能的按钮组合如下:- MB_OK
- MB_OKCANCEL
- MB_YESNO
- MB_YESNOCANCEL
- MB_RETRYCANCEL
- MB_ABORTRETRYIGNORE
- MB_CANCELTRYCONTINUE
默认按钮
可以选择按钮作为用户点击 Enter 键时的自动选项。选项包括 MB_DEFBUTTON1(默认)、MB_DEFBUTTON2、MB_DEFBUTTON3 和 MB_DEFBUTTON4。按钮从左到右,从 1 开始编号。图标
有四个图标可用。有时多个常数会产生相同的图标:- 停止符:MB_ICONSTOP. MB_ICONHAND 或 MB_ICONERROR
- 问号(?):MB_ICONQUESTION
- 信息符(i):MB_ICONINFORMATION、MB_ICONASTERISK
- 感叹号(!):MB_ICONEXCLAMATION、MB_ICONWARNING
返回值
如果 MessageBoxA 失败,则返回零;否则,它将返回一个整数以表示用户在关闭对话框时点击的按钮。选项包括 IDABORT、IDCANCEL、IDCONTINUE、IDIGNORE、IDNO、IDOK、IDRETRY、IDTRYAGAIN,以及 IDYES。Smallwin.inc 将 MessageBoxA 重定义为 MessageBox,这个名字看上去具有更强的用户友好性。
如果想要消息框窗口浮动于桌面所有其他窗口之上,就在传递的最后一个参数(uType 参数)值上添加 MB_SYSTEMMODAL 选项。
1) 演示程序
下面将通过一个小程序来演示函数 MessageBoxA 的一些功能。第一个函数调用显示一条警告信息:第二个函数调用显示一个问号图标以及 Yes/No 按钮。如果用户选择 Yes 按钮,则程序利用返回值选择一个操作:
第三个函数调用显示一个信息图标以及三个按钮:
第四个函数调用显示一个停止图标和一个 OK 按钮:
2) 程序清单
MessageBoxA 演示程序的完整清单如下所示。函数 MessageBoxA 重命名为函数 MessageBox,这样就可以使用更加简单的函数名:; 演示 MessageBoxA INCLUDE Irvine32.inc .data captionW BYTE "Warning",0 warningMsg BYTE "The current operation may take years " BYTE "to complete.",0 captionQ BYTE "Question",0 questionMsg BYTE "A matching user account was not found." BYTE 0dh,0ah,"Do you wish to continue?",0 captionC BYTE "Information",0 infoMsg BYTE "Select Yes to save a backup file " BYTE "before continuing,",0dh,0ah BYTE "or click Cancel to stop the operation",0 captionH BYTE "Cannot View User List",0 haltMsg BYTE "This operation not supported by your " BYTE "user account.",0 .code main PROC ; 显示感叹号图标和 OK 按钮 INVOKE MessageBox, NULL, ADDR warningMsg, ADDR captionW, MB_OK + MB_ICONEXCLAMATION ; 显示问号图标和 Yes/No 按钮 INVOKE MessageBox, NULL, ADDR questionMsg, ADDR captionQ, MB_YESNO + MB_ICONQUESTION ; 解释用户点击的按钮 cmp eax,IDYES ; YES button clicked? ; 显示信息图标和 Yes/No/Cancel 按钮 INVOKE MessageBox, NULL, ADDR infoMsg, ADDR captionC, MB_YESNOCANCEL + MB_ICONINFORMATION \ + MB_DEFBUTTON2 ; 显示停止图标和 OK 按钮 INVOKE MessageBox, NULL, ADDR haltMsg, ADDR captionH, MB_OK + MB_ICONSTOP exit main ENDP END main