第32课 病毒弹窗
病毒弹窗(while语句、MessageBox函数)

黑客捣蛋鬼制作了一个弹窗病毒,导致计算机不停地弹窗,不管怎么单击确定按钮和×按钮,都停不下来。
我们一起研究一下这个病毒程序吧!
弹窗病毒

翻译助力理解
●message:消息。
●box:箱子、盒子。
●MessageBox:对话框。
是什么导致弹窗停不下来呢?
答案就是有一个永远为真的循环while(true){}。
敲黑板
遇到while循环,先进行条件判断,再根据条件true或false决定是否进入循环。

弹窗效果通过MessageBox函数实现。

MessageBox按键形态
①MB_OK

MB_OK:只有一个“确定”按钮。

②MB_YESNO

MB_YESNO:有两个按钮—是(Y)和否(N)。

③MB_OKCANCEL

MB_OKCANCEL:有两个按钮—确定和取消。

④MB_ABORTRETRYIGNORE

MB_ABORTRETRYIGNORE:有3个按钮—中止(A)、重试(R)和忽略(I)。

⑤MB_YESNOCANCEL

MB_YESNOCANCEL:有3个按钮—是(Y)、否(N)和取消。

⑥MB_RETRYCANCEL

MB_RETRYCANCEL:有两个按钮—重试(R)和取消。

翻译助力理解
●cancel:取消。
●ignore:忽略、忽视。
●retry:重试。
●abort:中止。
提出思考
(1)单击弹窗按钮为什么没反应呢?
(2)如何单击不同的按钮执行不同的指令呢?



MessageBox(NULL,"是否连续弹窗?","提示",MB_YESNO)==IDYES:判断MessageBox()函数的返回值是否为IDYES,如果是,则表示“是(Y)”按钮被按下,进入if语句执行无限循环弹窗;如果不是,则进入else语句输出“弹窗取消了。”

敲黑板
MessageBox()函数拥有返回值,通过不同的返回值可以判断弹窗后什么按钮被按下了。再结合条件分支语句,根据不同的按钮返回值执行不同的指令。
●IDYES:“是”按钮被按下。
●IDNO:“否”按钮被按下。
●IDOK:“确定”按钮被按下。
●IDCANCEL:“取消”按钮被按下。
●IDABORT:“中止”按钮被按下。
●IDRETRY:“重试”按钮被按下。
●IDIGNORW:“忽略”按钮被按下。


终止无限弹窗
弹窗无法终止,可以直接单击×按钮终止程序的运行。


拓展探索
给对话框增加各式各样的图标。

翻译助力理解
●icon:图标。
●exclamation:感叹号。
●question:疑问、问题。
●asterisk:星号(置于词语旁边以引起注意或另有注释)。
巩固练习
(1)在C++中,要显示对话框,通常需要包含哪个头文件?()
A.
B.
C.
D.
(2)在C++中,如何检查用户是否单击了MessageBox中的”确定”按钮?()
A.使用is(OK)函数
B.检查返回值是否等于IDOK
C.判断返回值是否等于IDYES
D.检查返回值是否等于true
(3)使用对话框设计3个“是”“否”判断题,选择答案后进入下一题,答对一题加1分,3题全部回答完成输出得分。
示例:

你的得分是:3
