窗口程序框架
#include <windows.h> //创建窗口程序的步骤: //1.创建winMain()主函数 //2.设计窗口 //3.注册窗口 //4.创建窗口 //5.显示窗口 LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, //消息 WPARAM wParam, //消息参数 LPARAM lParam) {//消息参数 switch(Message) { case WM_DESTROY: {//当用户关闭窗口,窗口销毁,程序需结束, 发退出消息,以退出消息循环 PostQuitMessage(0); break; } default: return DefWindowProc(hwnd, Message, wParam, lParam); } return 0; } //1.创建winMain()主函数 /* WINAPI 函数修饰符 被称为栈的数据结构 用来支持参数传递 */ int WINAPI WinMain(HINSTANCE hInstance,//该程序当前运行实例的句柄 HINSTANCE hPrevInstance, //当前实例的前一个实例的句柄 LPSTR lpCmdLine, //是一个以空终止的字符串 ,指定转递给应用程序的命令行参数 int nCmdShow//指定程序的窗口应该如何展示 ) { //2.设计窗口 WNDCLASSEX wc;//窗口属性 memset(&wc,0,sizeof(wc));//初始化结构体 wc.cbSize = sizeof(WNDCLASSEX);//赋值结构体大小 wc.lpfnWndProc = WndProc; /* 窗口处理函数的指针,用来发送消息,回调函数 */ wc.hInstance = hInstance;//实例句柄 wc.hCursor = LoadCursor(NULL, IDC_ARROW);//窗口类的鼠标样例,为鼠标样例资源的句柄 wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//窗口类的背景刷,为背景刷句柄 wc.lpszClassName = "WindowClass";//指向窗口类的指针 //3.注册窗口 if(!RegisterClassEx(&wc)) { MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK); return 0; } //4.创建窗口 创建成功后返回值为窗口句柄类型 HWND hwnd; hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Caption",WS_VISIBLE|WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, /* x */ CW_USEDEFAULT, /* y */ 640, /* 宽*/ 480, /* 高*/ NULL,//窗口的父窗口句柄 NULL,//窗口的菜单句柄 hInstance,//应用程序实例句柄 NULL//窗口创建时附加参数 ); if(hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK); return 0; } //5.显示窗口 MSG msg;//所有消息的临时位置 while(GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg);//消息转化 DispatchMessage(&msg); //消息派遣,把 TranslateMessage转换的消息发送到窗口的消息处理函数 //此函数在窗口注册时已经指定 } return msg.wParam;//指定应用程序退出 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报