sw
sw copied to clipboard
ListView 怎么修改边框颜色值
如题,怎么修改边框的颜色值呢?
Win32 API 中并没有给 ListView 提供自定义边框颜色的接口,需要的话得自己绘制,可以通过重写 OnEndPaint 给窗口绘制追加自定义逻辑,以添加红色边框为例:
class MyListView : public ListView
{
protected:
virtual void OnEndPaint() override
{
HWND hwnd = this->Handle;
SIZE size = this->Rect->GetSize();
HDC hdc = GetWindowDC(hwnd);
RECT rect = { 0, 0, size.cx, size.cy };
// 创建红色画笔
HPEN hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); // 1像素红色边框
HGDIOBJ hOldPen = SelectObject(hdc, hPen);
HGDIOBJ hOldBrush = SelectObject(hdc, GetStockObject(NULL_BRUSH)); // 无填充
// 绘制矩形边框
Rectangle(hdc, rect.left, rect.top, rect.right, rect.bottom);
// 清理资源
SelectObject(hdc, hOldPen);
SelectObject(hdc, hOldBrush);
DeleteObject(hPen);
ReleaseDC(hwnd, hdc);
}
};
哦哦~ 这个和 AI 给的方案是一样的,我其实以为有更简单的方式, 我看到有 setStyle, 和 SetExtendedStyle,我还以为这些可以快捷设置样式呢。