前言
绘制窗口的步骤可以大致分为,设计窗口类,注册窗口类,创建窗口,显示窗口,更新窗口,消息循环。
一、设计窗口类
这里要用到WNDCLASS窗口类,先定义一个WNDCLASS类的变量。通过对于这个变量的初始化,我们可以设置窗口的背景颜色,鼠标光标类型,图标,应用程序实例句柄,窗口处理函数等等。
TCHAR szAppClassName[] = TEXT("ZWX");
WNDCLASS wc = {
0 };
wc.hbrBackground = CreateSolidBrush(RGB(255, 255, 0)); //背景颜色画刷
wc.hCursor = LoadCursor(NULL, IDC_HAND); //鼠标光标类型,手:DC_HAND
wc.hIcon = LoadIcon(NULL, IDI_ERROR); //图标
wc.hInstance = hInstance; //应用程序实例句柄,表示exe
wc.lpfnWndProc = WindowProc; //窗口处理函数
wc.lpszClassName = szAppClassName; //窗口类型名
wc.style = CS_HREDRAW | CS_VREDRAW; //窗口类的风格
二、注册窗口类
使用RegisterClass(&wc)注册窗口
RegisterClass(&wc);
三、创建窗口
使用CreateWindow函数创建窗口,通过函数参数可以设置窗口类型名,窗口标题,窗口的风格,窗口左上角的坐标,窗口的宽和高等等。
HWND hWnd=CreateWindow(
szAppClassName, //窗口类型名
TEXT("方块"), //窗口标题
WS_BORDER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU, //窗口的风格
200, 100, //窗口左上角坐标(像素)
492, 634, //窗口的宽和高
NULL, //父窗口句柄
NULL, //菜单句柄
hInstance, //应用程序实例句柄
NULL //附加参数
);
四、显示窗口
使用ShowWindow(hWnd, SW_SHOW)显示窗口,hWnd是创建窗口时HWND类型的变量。
ShowWindow(hWnd, SW_SHOW);
五、更新窗口
使用UpdateWindow(hWnd)函数更新窗口。
UpdateWindow(hWnd);
六、消息循环
通过GetMessage函数从消息队列中取得消息。将接收到的消息用TranslateMessage函数将虚拟键消息转换为字符消息,然后用DispatchMessage将消息分发给窗口处理函数。
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))//GetMessage从调用线程的消息队列中取得一个消息并放于msg
{
//将虚拟键消息转换为字符消息
TranslateMessage(&msg);
//将消息分发给窗口处理函数
DispatchMessage(&msg);
}
七、完整代码
#include<windows.h>
#include<time.h>
#include<iostream>
using namespace std;
int g_arrTetrics[2][4] = {
0 };
//窗口处理函数
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg,WPARAM wParam,LPARAM lParam);
//绘图
void OnPaint(HDC hDC);