窗口程序框架
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #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" , //指定窗口类的名称,设计窗口类中为LpszClassName成员指定的名称 "Caption" , // 指定窗口类的名字。窗口样式指定了标题栏,窗口名字将显示在标题栏上 WS_VISIBLE|WS_OVERLAPPEDWINDOW, //窗口的基本风格 CW_USEDEFAULT, /* x */ CW_USEDEFAULT, /* y */ 640, /* 宽 */ 480, /* 高 */ NULL, //窗口的父窗口句柄 NULL, // 窗口的菜单句柄 hInstance, //应用程序实例句柄 NULL); //窗口创建时附加参数 //5.显示窗口 MSG msg; //所有消息的临时位置 if (hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!" , "Error!" ,MB_ICONEXCLAMATION|MB_OK); return 0; } 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月简报