在WM_PAINT中绘制矩形及边框
时间: 2024-02-24 07:54:34 浏览: 22
在WM_PAINT消息处理函数中,我们可以使用GDI函数来绘制矩形及边框。以下是一个简单的例子:
```c++
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
RECT rect = { 50, 50, 150, 150 }; // 定义一个矩形
// 绘制内部矩形
HBRUSH hBrush = CreateSolidBrush(RGB(255, 0, 0)); // 创建一个红色的画刷
FillRect(hdc, &rect, hBrush);
DeleteObject(hBrush); // 释放画刷
// 绘制矩形边框
HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 255)); // 创建一个蓝色的画笔
SelectObject(hdc, hPen); // 选中画笔
SelectObject(hdc, GetStockObject(NULL_BRUSH)); // 选中透明的画刷
Rectangle(hdc, rect.left, rect.top, rect.right, rect.bottom); // 绘制矩形
DeleteObject(hPen); // 释放画笔
EndPaint(hWnd, &ps);
break;
}
```
在上述代码中,我们定义了一个矩形,并使用CreateSolidBrush函数创建了一个红色的画刷,将矩形内部填充为红色。然后,我们使用CreatePen函数创建了一个蓝色的画笔,选中该画笔并选中透明的画刷,使用Rectangle函数绘制矩形边框。最后,我们释放了画刷和画笔。
注意,我们在绘制矩形边框时,选中了透明的画刷。这是因为我们只想绘制边框,而不想填充矩形内部。如果不选中透明的画刷,Rectangle函数将会同时填充矩形内部。