我对这个功能有几个问题:
如果我稍微移动一下窗口,或者把它切换到另一个监视器(顺便说一句,它有不同的缩放),那么文本的较小版本就会出现在初始文本之前,如果我在打印文本之前调用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;
}发布于 2020-06-28 14:05:00
在WM_PAINT中,您必须调用BeginPaint()和EndPaint()。这样您就可以获得设备上下文。如果您不调用EndPaint(),那么rect就不会被验证。
https://stackoverflow.com/questions/62623575
复制相似问题