1

嗨,我想清除,但DrawText()我不知道如何正确执行。我可以简单地SetTextColor设置背景的颜色,但我认为这不是优雅的方式。rc我不知道也许我可以用一个包含我的文本的矩形做点什么。我画case WM_PAINT在里面:

hdc=BeginPaint(hwnd, &paint);
.... //some other code here
DrawText(hdc, TEXT("some text"), -1, &rc, DT_SINGLELINE);
....//some other code here
EndPaint(hwnd, &paint);

还有一件事情。我没有DeleteDC(hdc);ReleaseDC(hdc);在我WM_PAINT的那没关系,或者我应该在之后或之前拥有它们 EndPaint(hwnd, &paint);

4

1 回答 1

3

除了在顶部绘制其他内容之外,没有其他方法可以“清除”您绘制的文本。DT_CALCRECT如果您的背景是纯色,则只需绘制该颜色的矩形(您可以通过使用带有 的标志来计算它需要多大DrawText)。如果您的背景是图像,那么您需要对图像的适当区域进行 blit。

请注意,由于 ClearType/抗锯齿,使用背景颜色(如您所建议的那样)在其自身顶部绘制文本可能不起作用。

要回答您的第二个问题,否 - 返回的 DCBeginPaint已被调用有效地删除,EndPaint因此您不需要(也不能)单独删除它。

于 2013-08-22T07:54:46.330 回答