matlab messagebox函数,汇编语言MessageBoxA函数:显示消息框

Win32 应用程序生成输岀的一个最简单的方法就是调用 MessageBoxA 函数:

MessageBoxA PROTO,

hWnd:DWORD,                   ;窗口句柄(可以为空)

lpText:PTR BYTE,                 ;字符串,对话框内

lpCaption:PTR BYTE,           ;字符串,对话框标题

uType:DWORD                   ;内容和行为

基于控制台的应用程序可以将 hWnd 设置为空,表示该消息框没有相关的包含窗口或父窗口。lpText 参数是指向空字节结束字符串的指针,该字符串将出现在消息框内。lpCaption 参数指向作为对话框标题的空字节结束字符串。uType 参数指定对话框的内容和行为。

内容和行为

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 的一些功能。第一个函数调用显示一条警告信息:

fe12a596867c415a34ed775db0c817c6.gif

第二个函数调用显示一个问号图标以及 Yes/No 按钮。如果用户选择 Yes 按钮,则程序利用返回值选择一个操作:

204c3928bb0e2ae1e958c22ae726eb16.gif

第三个函数调用显示一个信息图标以及三个按钮:

6083f0af1126965c6552e2a27fd9ac2c.gif

第四个函数调用显示一个停止图标和一个 OK 按钮:

3a8c8cabee207a7e48036590c9d6c376.gif

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值