Windows创建窗口详解+代码---十天教会你俄罗斯方块

代码地址:https://blog.csdn.net/qq_41603898/article/details/80968266

以VS为例解析:

先创建项目,主函数,再写窗口结构体


//一.创建窗口结构体
WNDCLASSEX wc;
wc.cbClsExtra = 0;//紧跟在窗口类尾部的一块额外空间
wc.cbSize = sizeof(wc);//结构体大小
wc.cbWndExtra = 0;//紧跟在窗口实例尾部的一块额外空间
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;//背景颜色
wc.hCursor = NULL;//光标
wc.hIcon = NULL;//窗口左上角的图标
wc.hIconSm = NULL;//状态栏中的图标,默认与左上角图标一致
wc.hInstance = hInstance;//实例句柄
wc.lpfnWndProc = NULL;//回调函数
wc.lpszClassName = NULL;//结构体名字
wc.lpszMenuName = NULL;//菜单栏名字

wc.style = CS_HREDRAW | CS_VREDRAW;//窗口水平变化或是垂直变化时重绘窗口

二.注册窗口结构体

   if (0 == RegisterClassEx(&wc))(0写左边是防止少写一个等号会产生报错信息,如果写右边少写一个等号就是赋值成0)
{
int eNum = GetLastError();//注册失败的错误代码
return 0;//注册失败

}

三.创建窗口

窗口句柄=HWND CreateWindowEx(

DWORD dwExStyle,//额外风格,比如WS_EX_WINDOWEDGE窗口有边框

LPCSTR lpClassName,//窗口结构体名字,用于系统区分

LPCSTR lpWindowName,//窗口左上角图标后的名字

DWORD dwStyle,//窗口风格,WS_OVERLAPPEDWINDOW包含多个风格

int X,//距离屏幕左边的距离

int Y,//距离屏幕上边的距离

int nWidth,//窗口宽度

int nHeight,//窗口的高度

HWND hWndParent,//父窗口句柄

HMENU hMenu,//菜单句柄

HINSTANCE hInstance,//实例句柄

LPVOID lpParam);//传递给回调函数的参数,MDI多文档窗口样式时使用

四.显示窗口

ShowWindow(窗口句柄(上面第三块函数的返回值), 显示窗口的状态);

五.消息处理

读取消息

BOOL GetMessage(

LPMSG lpMsg,//读取的消息放到结构体里

HWND hWND,//NULL表示接受所有窗口的消息

UINT wMsgFilterMin,

UINT wMsgFilterMax);//处理消息的范围,0,0表示处理所有消息


翻译消息

BOOL TranslateMessage(CONST MSG *lpMsg);

分发消息

LRESULT DispatchMessage(CONST MSG *lpMsg);

六.回调函数

LRESULT CALLBACK WndProc(//WndProc名称自定义

HWND hwnd,//窗口句柄

UINTmessage,//消息ID

WPARAM wParam,

LPARAM lParam)//两个消息参数



LRESULT CALLBACK WndProc(HWND hwnd,UINTmessage,WPARAM wParam,LPARAM lParam)

{//让系统自动处理默认消息

return DefWindowProc(hwnd,message,wParam,lParam);

}

wc.lpfnWndProc = WndProc;//回调函数

可将代码和解析结合看

猜你喜欢

转载自blog.csdn.net/qq_41603898/article/details/80968333