#include <windows.h>
// HWND hwnd,窗口句柄
// UINT msg,消息参数
// WPARAM wParam,额外参数
// LPARAM lParam 附带参数
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
//处理 用户操作
switch (msg)
{
case WM_CLOSE:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
//窗口程序的启动入口
//HINSTANCE hInstance,当前应用实例
// HINSTANCE hPrevInstance,之前应用实例
// LPSTR lpCmdLine,命令行启动参数
// int nShowCmd 显示的命令 如何显示窗口
// 注册窗口--创建窗口--显示窗口---用户操作
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
// 注册窗口
WNDCLASSEX wndclass;
wndclass.cbClsExtra = 0;
wndclass.cbSize = sizeof(WNDCLASSEX);
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = NULL;
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);//设置光标
wndclass.hIcon = NULL;
wndclass.hIconSm = NULL;
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WindowProc;
wndclass.lpszClassName = L"Window";
wndclass.lpszMenuName = NULL;
wndclass.style = CS_VREDRAW | CS_HREDRAW;
ATOM atom = RegisterClassEx(&wndclass);
if (!atom) {
// 注册窗口失败,弹出框
MessageBox(NULL, L"Register Fail", L"Error", MB_OK);
return 0;
}
// 设置视口大小
RECT rect;
rect.left = 0;
rect.right = 1280;
rect.top = 0;
rect.bottom = 720;
// 修改rect值,保证视口大小的窗口值
AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, NULL);
int windowWidth = rect.right - rect.left;
int windowHeight = rect.bottom - rect.top;
// 创建窗口
HWND hwnd = CreateWindowEx(NULL, L"Window", L"asWindow", WS_OVERLAPPEDWINDOW,
100, 100, windowWidth, windowHeight,
NULL, NULL, hInstance, NULL);
// 显示窗口
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
MSG msg;
while (true)
{
if (PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return 0;
}