一 窗口创建过程(7个基本步骤)
定义WinMain函数
定义窗口处理函数(自定义,处理消息)
注册窗口类(向操作系统写入一些数据)
创建窗口(内存中创建窗口)
显示窗口(绘制窗口的图像)
消息循环(获取/翻译/派发消息)
消息处理(窗口过程)
二 示例代码
#include <windows.h>
#include <iostream>
// 定义窗口消息处理函数
LRESULT WINAPI WndProc(HWND hwnd, UINT msgID, WPARAM wParam, LPARAM lParam)
{
return DefWindowProc(hwnd, msgID, wParam, lParam);
}
// windows窗口入口函数
int WINAPI WinMain(
HINSTANCE hInstance, // 当前程序的实例句柄
HINSTANCE hPrevInstance, // 当前程序前一个实例句柄(已经废弃了,抹油在用)
LPSTR lpCmdLine, // 命令行参数字符串
int nCmdShow // 窗口显示方式
)
{
// 注册窗口类
WNDCLASS wc = { 0 };
// 缓冲区
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
// 窗口属性
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
// 使用默认光标
wc.hCursor = NULL;
// 使用默认图标
wc.hIcon = NULL;
// 定义窗口处理函数
wc.lpfnWndProc = WndProc;
// 窗口名字
wc.lpszClassName = L"Main";
// 无菜单
wc.lpszMenuName = NULL;
// 重绘标志
wc.style = CS_HREDRAW | CS_VREDRAW;
// 将以上所有赋值全部写入操作系统
RegisterClass(&wc);
// 在内存创建窗口
HWND wnd = CreateWindow(L"main", L"主窗口", WS_OVERLAPPEDWINDOW,
100,100,500,500, NULL, NULL, hInstance, NULL);
ShowWindow(wnd, SW_SHOW);
// refresh window
UpdateWindow(wnd);
//
MSG msg = { 0 };
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}