VC创建一个灰色窗口代码最简
时间: 2024-09-21 15:07:26 浏览: 15
在Windows API编程中,如果你想要创建一个灰色(非透明度调节的纯灰色)的窗口,你可以直接设置窗口的背景颜色为灰色。以下是使用VC(Visual C++)创建一个简单灰色窗口的基本代码示例:
```cpp
#include "windows.h"
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_CREATE:
// 创建窗口时设定初始颜色
SetWindowLongPtr(hWnd, GWL_EXSTYLE, WS_EX_LAYERED); // 添加层叠窗口属性
SetLayeredWindowAttributes(hWnd, RGB(128, 128, 128), 0, LWA_COLORKEY); // 设置灰度背景
break;
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
FillRect(hdc, &ps.rcPaint, CreateSolidBrush(RGB(128, 128, 128))); // 绘制灰色背景
EndPaint(hWnd, &ps);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
WNDCLASS wc = {0};
wc.lpfnWndProc = WndProc;
wc.lpszClassName = L"MyGrayWindowClass";
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // 使用标准灰色背景色
if (!RegisterClass(&wc)) {
return 0;
}
HWND hWnd = CreateWindow(wc.lpszClassName, L"灰色窗口", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
if (hWnd == NULL) {
return 0;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
```
这个代码首先定义了一个窗口过程函数`WndProc`,在`WM_CREATE`消息处理中设置了窗口的层叠样式,并在`WM_PAINT`事件中填充了灰色背景。然后在`WinMain`函数中注册窗口类并创建窗口。