我需要绘制一个与它在网络适配器属性窗口中看起来完全相同的复选框图像,例如:
为什么我不想使用DrawThemeBackground 函数?首先,我需要绘制与上述完全相同的复选框的外观。其次,DrawThemeBackground 功能只有在启用 Windows 主题时才有效,并且复选框看起来是主题。
DrawFrameControl 函数使用复选框绘制 3d 边框。这不合适。
所以我决定使用Rectangle、MoveToEx 和LineTo 函数编写复选框绘制代码:
HPEN old_pen = (HPEN)SelectObject(hdc, CreatePen(PS_SOLID, 1, RGB(128, 128, 128)));
HBRUSH old_brush = (HBRUSH)SelectObject(hdc, CreateSolidBrush(RGB(255, 255, 255)));
Rectangle(hdc, 0, 0, 11, 11);
DeleteObject(SelectObject(hdc, old_pen));
DeleteObject(SelectObject(hdc, old_brush));
old_pen = (HPEN)SelectObject(hdc, CreatePen(PS_SOLID, 2, RGB(0, 0, 0)));
MoveToEx(hdc, 1, 4, NULL);
LineTo(hdc, 5, 8);
MoveToEx(hdc, 4, 7, NULL);
LineTo(hdc, 9, 2);
DeleteObject(SelectObject(hdc, old_pen));
old_pen = (HPEN)SelectObject(hdc, CreatePen(PS_SOLID, 1, RGB(255, 255, 255)));
MoveToEx(hdc, 1, 3, NULL);
LineTo(hdc, 1, 6);
MoveToEx(hdc, 1, 6, NULL);
LineTo(hdc, 4, 9);
MoveToEx(hdc, 4, 9, NULL);
LineTo(hdc, 9, 4);
MoveToEx(hdc, 9, 4, NULL);
LineTo(hdc, 9, 1);
DeleteObject(SelectObject(hdc, old_pen));
我得到了想要的结果: