C语言也能干大事~part 1

550 阅读2分钟

MessageBox函数的使用

课堂练习

创建Win32 Application

Win32 Application和Win32 Console Application区别: zhidao.baidu.com/question/12…

编写代码

#include "stdafx.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.

	int ret = MessageBox(NULL,TEXT("你超过18岁了吗?"),TEXT("提问"),MB_YESNO|MB_ICONQUESTION);

	if(IDYES == ret)   //变量放右边,常量值放左边
	{
		MessageBox(NULL, TEXT("你是成年人了"),TEXT("回复"),MB_OK);
	}
	else
	{
		MessageBox(NULL, TEXT("你是未成年人"),TEXT("回复"),MB_OK);
	}
	
	
	return 0;
}

注:

Message(NULL, TEXT(""), TEXT(""), ME_YESNO|MB_ICONQUESTION);

                     正文,    标题,      按钮类型
                
  • TEXT是宏,建议将所有字符串都用TEXT括起来

  • 宏一般都是大写

  • MessageBox的返回值是int类型

设置希望在对话框中显示的按钮


#define MB_OK

0x00000000L     (0x是十六进制)

#define MB_OKCANCEL

0x00000001L

#define MB_ABORTRETRYIGNORE

0x00000002L

#define MB_YESNOCANCEL

0x00000003L

#define MB_YESNO

0x00000004L

#define MB_RETRYCANCEL

0x00000005L

设置对话框中显示的图标:

#define MB_ICONHAND


0x00000010L

#define MB_ICONQUESTION

0x00000020L

#define MB_ICONEXCLAMATION

0x00000030L

#define MB_ICONASTERISK

0x00000040L

必备小知识

“|”是什么意思?

*“|”是位运算里的“或”运算,只有对应的**两个二进制位**全为0,结果才为0。

例如:

MB_OK、MB_OKCANCEL 化为二进制 或运算 之后的结果可以看出,他们的低四位和高四位各自保留自己原来的特征

MB_YESNOCANCEL、MB_ICONQUESTION 化为二进制 或运算 之后的结果可以看出,他们的低四位和高四位也各自保留自己原来的特征

这样“MB_OK、MB_OKCANCEL”组的数值与“MB_YESNOCANCEL、MB_ICONQUESTION”组的数值进行或运算后能分别保留各自的部分,也就是在结果值中同时体现两组的取值。所以说按钮和图标可以通过此运算同时出现。

课后作业

运行以后弹出询问对话框(有【是】、【否】两个按钮以及问号图标)“你 是好人吗?”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一 个警告图标)“你看你就不像好人,点击【确定】开始格式化 C 盘!”;如果点 击【否】,则弹出对话框(有【重试】、【取消】两个按钮及问号图标)“尝试把你变成好 人失败,是否重试?”。

#include "stdafx.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.

	int ret = MessageBox(NULL,TEXT("你是好人吗?"),TEXT("询问"),MB_YESNO|MB_ICONQUESTION);
	
	if(IDYES == ret)
	{

		MessageBox(NULL,TEXT("你看你就不像好人,点击【确定】开始格式化 C 盘"),TEXT("回答"),MB_OK|MB_ICONWARNING);
	}
	else
	{
		int ret1 = MessageBox(NULL,TEXT("尝试把你变成好人失败,是否重试?"),TEXT("挽救你"), MB_RETRYCANCEL|MB_ICONQUESTION);
		
		if(IDRETRY == ret1)
		{
			MessageBox(NULL, TEXT("坏人就是换人,没法变成好人"), TEXT("没戏喽"), MB_OK|MB_ICONERROR);
		}  //还可以自行添加代码段
	}

	return 0;
}

  • EXCLAMATION 或者 WARNING: 警告⚠

  • HAND: 错误提示❌

  • ASTERISK: 星号,提示


附:代码整理快捷键

TAB: 向后缩进

SHIFT+TAB: 向前缩进