视频参考:
https://www.bilibili.com/video/BV1zGDCYHErA/
创建一个保存项目的路径
VS的安装略过,个人自行百度
1. vs 创建第一个CMAKE的窗口项目
game.cpp 修改如下的代码
到https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-winmain
去拷贝代码
#include <windows.h> // 引入 Windows API 所需的头文件// WinMain 是 Windows 应用程序的入口函数,类似于命令行程序中的 main 函数
// 参数说明:
// hInst - 当前应用程序的实例句柄,用于标识应用程序资源
// hInstPrev - 上一个实例的句柄(在多实例应用程序中使用,通常为 NULL)
// cmdline - 启动程序时传递的命令行参数
// cmdshow - 窗口显示模式,控制程序启动时窗口的显示方式(如最大化、最小化等)
int CALLBACK WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, //PSTR cmdline, int cmdshow) {// 调用 Windows API MessageBox 来弹出一个消息框// 参数说明:// NULL - 父窗口句柄,这里设为 NULL 表示没有父窗口// "This is game study" - 消息框中显示的文本内容// "game study" - 消息框的标题栏文本// MB_OK | MB_ICONINFORMATION - 消息框的样式,MB_OK 表示显示一个确定按钮,MB_ICONINFORMATION 表示显示一个信息图标return MessageBox(NULL, "This is game study", // 显示的文本内容"game study", // 消息框的标题MB_OK | MB_ICONINFORMATION); // 消息框的样式(确定按钮 + 信息图标)
}
上面的CALLBACK 是__stdcall:Windows API 使用的调用约定,函数本身负责清理栈。
-
编译
-
运行
如果函数MessageBox 未定义需要链接User32.lib
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebox
代码中的MessageBox 实际上是一个宏
如果定义了UNICODE MessageBox就是MessageBoxW
如果ANSI 就是MessageBoxA
MessageBox 被define 什么版本取决于你是在UTF-8还是ANSI模式下面编译