绘制文本问题

DrawText issues

本文关键字:问题 文本 绘制      更新时间:2023-10-16

我对这个函数有几个问题:

  • 如果我稍微移动窗口,或者将其切换到另一台显示器,文本会变成乱码(顺便说一下,它具有不同的缩放比例(
  • 如果我在打印文本之前调用 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;
}

WM_PAINT中,必须调用BeginPaint()EndPaint()。通过这种方式获取设备上下文。如果不调用EndPaint()则不会验证 rect。