【发布时间】:2020-10-18 18:10:40
【问题描述】:
我对这个函数有几个问题:
- 如果我稍微移动窗口或将其切换到另一台显示器(顺便说一下,它具有不同的缩放比例),文本就会变成乱码
- 如果我在打印文本之前调用 CreateFont 和 SelectObject,则会在初始文本之前显示较小版本的文本
我做得对吗?也许 WM_PAINT 案例中有太多的调用?我不知道还能怎么做
我的代码:
case(WM_PAINT):
{
HDC hDC = GetWindowDC(Window);
RECT lpRect;
GetClientRect(Window,
&lpRect
);
SetTextColor(hDC, RGB(0, 0, 0));
SetBkMode(hDC, TRANSPARENT);
DrawTextW(hDC,
L"Loading...",
-1,
&lpRect,
(DT_SINGLELINE | DT_TOP | DT_VCENTER | DT_NOCLIP)
);
DeleteDC(hDC);
break;
}
case(WM_ERASEBKGND):
{
HDC hDC = GetWindowDC(Window);
RECT lpRect;
GetClientRect(Window, &lpRect);
HBRUSH hBrush = CreateSolidBrush(RGB(255, 255, 255));
FillRect(hDC, &lpRect, hBrush);
DeleteObject(hBrush);
break;
}
【问题讨论】:
-
不相关,但我建议您将
lpRect更改为rect,因为它不是指向RECT结构的指针。