#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; //窗口属性 知识点1
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.注册窗口
RegisterClassEx(&wc);
//4.创建窗口
//创建成功后返回值为窗口句柄类型
HWND hwnd;//句柄,或指向窗口的指针
hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,//窗口的扩展风格 知识点2
"WindowClass",//指定窗口类的名称,设计窗口类中为lpszClassName成员指定的名称
"Caption",//指定窗口的名字。窗口样式指定了标题栏,窗口名字将显示在标题栏上
WS_VISIBLE|WS_OVERLAPPEDWINDOW,//窗口的基本风格 知识点2
CW_USEDEFAULT, //x
CW_USEDEFAULT, //y
640,//宽
480,//高
NULL,//窗口的父窗口句柄
NULL,//窗口的菜单句柄
hInstance,//应用程序实例句柄
NULL);//窗口创建是附加参数
//5.显示窗口
MSG msg;//所有消息的临时位置
while(GetMessage(&msg, NULL, 0, 0) > 0) {//如果没有接受到错误信息,执行下面函数语句
TranslateMessage(&msg);//消息转化
DispatchMessage(&msg);//消息派遣。吧TranlateMessage转换的消息发送到窗口的消息处
}
return msg.wParam;//指定应用程序退出
}