C++ Windows.h 窗口绘制:绘制红色正方形
#include <iostream>\n#include <windows.h>\n\nLRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);\n\nint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)\n{\n // 注册窗口类\n const wchar_t CLASS_NAME[] = L"Sample Window Class";\n\n WNDCLASS wc = {};\n\n wc.lpfnWndProc = WindowProc;\n wc.hInstance = hInstance;\n wc.lpszClassName = CLASS_NAME;\n\n RegisterClass(&wc);\n\n // 创建窗口\n HWND hwnd = CreateWindowEx(\n 0, // 扩展样式\n CLASS_NAME, // 类名\n L"Sample Window", // 窗口标题\n WS_OVERLAPPEDWINDOW, // 窗口样式\n\n // Size and position\n CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,\n\n NULL, // 父窗口\n NULL, // 菜单\n hInstance, // 实例句柄\n NULL // 附加数据\n );\n\n if (hwnd == NULL)\n {\n return 0;\n }\n\n // 显示窗口\n ShowWindow(hwnd, nCmdShow);\n\n // 消息循环\n MSG msg = {};\n while (GetMessage(&msg, NULL, 0, 0))\n {\n TranslateMessage(&msg);\n DispatchMessage(&msg);\n }\n\n return 0;\n}\n\nLRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)\n{\n switch (uMsg)\n {\n case WM_PAINT:\n {\n PAINTSTRUCT ps;\n HDC hdc = BeginPaint(hwnd, &ps);\n\n RECT rect;\n GetClientRect(hwnd, &rect);\n\n int width = (rect.right - rect.left) * 3 / 4; // 正方形长度为窗口长度的 3/4\n int height = rect.bottom - rect.top; // 正方形高度和窗口高度相同\n\n int x = (rect.right - rect.left - width) / 2; // 正方形左上角的x坐标\n int y = (rect.bottom - rect.top - height) / 2; // 正方形左上角的y坐标\n\n HBRUSH brush = CreateSolidBrush(RGB(255, 0, 0)); // 用红色作为正方形的颜色\n SelectObject(hdc, brush);\n\n Rectangle(hdc, x, y, x + width, y + height); // 绘制正方形\n\n EndPaint(hwnd, &ps);\n }\n return 0;\n\n case WM_DESTROY:\n PostQuitMessage(0);\n return 0;\n\n default:\n return DefWindowProc(hwnd, uMsg, wParam, lParam);\n }\n}\n\n这段代码展示了使用C++和Windows.h库创建窗口并绘制红色正方形的步骤。首先注册窗口类,然后创建窗口,在窗口过程函数中处理WM_PAINT消息进行绘制。最后进入消息循环处理消息。编译和运行代码后,将显示一个窗口,窗口中会绘制一个红色正方形,正方形的长度是窗口长度的3/4,高度与窗口高度相同。
原文地址: https://www.cveoy.top/t/topic/pIj1 著作权归作者所有。请勿转载和采集!