课程首页 › 第3部分 › 第32课

第32课 病毒弹窗

第3部分 不辞辛苦 · 循环结构· 知识点:while语句、MessageBox函数

病毒弹窗(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