主目录传送门

https://blog.csdn.net/zb774095236/article/details/108291755

本次学习的源码模板下载:

1、 百度云:https://pan.baidu.com/s/14XoBHrtVVvvN_zaiv-ebmg    提取码:kvbq

学习目标:

Windows API一日一练(1)-弹出按钮的基础源码版本上更加详细的学习 MessageBox

因为本次的按钮类型较多所以将直接在代码中调试体现

 


学习内容:

一、 项目参考  

1.  https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebox   Microsoft官方解释文档

2. https://blog.csdn.net/caimouse/article/details/1683543      大牛的Win32系列

二. 在往期模板上修改和新增的步骤
1.代码段

//库文件
#include "Windows.h"
#include "tchar.h"


//定义WinMain的入口
int APIENTRY _tWinMain(HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPTSTR    lpCmdLine,
	int       nCmdShow)
{
	
	//没有这些参数也不会发生警告
	UNREFERENCED_PARAMETER(hInstance);
	UNREFERENCED_PARAMETER(hPrevInstance);
	UNREFERENCED_PARAMETER(lpCmdLine);
	UNREFERENCED_PARAMETER(nCmdShow);


	//获取桌面的句柄。
	HWND hWnd = GetDesktopWindow();


	//显示一行消息
	//MessageBox(hWnd, _T("第一个应用程序"), _T("例子"), MB_OK);//注释 下面是更加详细的实验



	//对于按钮的类型如果你有需求你可以查询微软的文档进行更多的实验
#define MessageBoxTest_1	//新增 方便调试如果你想调试某个按钮请修改后面的数字

	int ret = IDCANCEL;//

	//#if defined(xxx)如果宏存在则对应代码会被执行
#if defined(MessageBoxTest_1)
	ret=MessageBox(NULL, _T("MB_ABORTRETRYIGNORE"),
		_T("按钮样式实验"), MB_ABORTRETRYIGNORE );
#elif defined(MessageBoxTest_2)
	ret = MessageBox(NULL, _T("MB_CANCELTRYCONTINUE|MB_DEFBUTTON1|MB_HELP"),
		_T("按钮样式实验"), MB_CANCELTRYCONTINUE | MB_DEFBUTTON1 | MB_HELP | MB_ICONEXCLAMATION);
#elif defined(MessageBoxTest_3)
	ret = MessageBox(NULL, _T("MB_OK|MB_DEFBUTTON3|MB_HELP"),
		_T("按钮样式实验"), MB_OK | MB_DEFBUTTON3 | MB_HELP | MB_ICONWARNING);
#elif defined(MessageBoxTest_4)
	ret = MessageBox(NULL, _T("MB_YESNOCANCEL|MB_DEFBUTTON2|MB_HELP"),
		_T("按钮样式实验"), MB_YESNOCANCEL | MB_DEFBUTTON2 | MB_HELP | MB_ICONINFORMATION);
#elif defined(MessageBoxTest_5)
	ret = MessageBox(NULL, _T("MB_RETRYCANCEL|MB_DEFBUTTON3|MB_HELP"),
		_T("按钮样式实验"), MB_RETRYCANCEL | MB_DEFBUTTON3  | MB_ICONQUESTION);
#elif defined(MessageBoxTest_6)
	ret = MessageBox(NULL, _T("MB_YESNOCANCEL|MB_DEFBUTTON4|MB_HELP"),
		_T("按钮样式实验"), MB_YESNOCANCEL | MB_DEFBUTTON4 | MB_HELP | MB_ICONSTOP);
#elif defined(MessageBoxTest_7)
	ret = MessageBox(NULL, _T("MB_YESNOCANCEL|MB_DEFBUTTON4|MB_HELP"),
		_T("按钮样式实验"), MB_YESNOCANCEL | MB_DEFBUTTON4  | MB_ICONHAND);

#endif 

	/*
	返回值是一个整数,如果有取消按钮,并且按下ESC键就返回IDCANCEL。如果有其它按钮,并且按下,就返回相应的值。主要的值如下:
		IDABORT 放弃按钮
		IDCANCEL取消按钮
		IDCONTINUE 继续按钮
		IDIGNORE 忽略按钮
		IDNO 否按钮
		IDOK 确定按钮
		IDRETRY 重试按钮
		IDTRYAGAIN 重试按钮
		IDYES 是按钮
	*/
	switch (ret)
	{
	case IDABORT:
		MessageBox(hWnd, _T("中止"), _T("刚刚您的操作"), MB_OK);
		break;
	case IDCANCEL:
		MessageBox(hWnd, _T("取消"), _T("刚刚您的操作"), MB_OK);
		break;
	case IDCONTINUE:
		MessageBox(hWnd, _T("继续"), _T("刚刚您的操作"), MB_OK);
		break;
	case IDIGNORE:
		MessageBox(hWnd, _T("忽略"), _T("刚刚您的操作"), MB_OK);
		break;
	case IDNO:
		MessageBox(hWnd, _T("否定"), _T("刚刚您的操作"), MB_OK);
		break;
	case IDOK:
		MessageBox(hWnd, _T("确定"), _T("刚刚您的操作"), MB_OK);
		break;
	case IDRETRY:
		MessageBox(hWnd, _T("重试"), _T("刚刚您的操作"), MB_OK);
		break;
	case IDTRYAGAIN:
		MessageBox(hWnd, _T("重试"), _T("刚刚您的操作"), MB_OK);
		break;	
	case IDYES:
		MessageBox(hWnd, _T("是"), _T("刚刚您的操作"), MB_OK);
		break;

	default:
		break;
	}
	return 0;

}

 


项目下载地址:

1.百度云:https://pan.baidu.com/s/1SrBt-sCJPY51HWLYkATE2A  提取码:5cco

留在最后

按钮的样式组合太多了 所以我最后放弃了全部的实验如果项目上有要求我会在重新实验的 哈哈 这个懒家伙

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐