#include <windows.h> 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;//指定应用程序退出 }
标签:wc,框架,句柄,程序,return,hwnd,窗口,NULL From: https://www.cnblogs.com/fushuxuan/p/18172357