您好我想清除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);
之后或之前拥有它们?
答案 0 :(得分:3)
除了在顶部绘制其他内容之外,没有办法“清除”您绘制的文本。如果你的背景是纯色,那么只需绘制一个这种颜色的矩形(你可以通过DT_CALCRECT
标志DrawText
来计算它需要的大小。如果您的背景是图像,则需要对图像的相应区域进行blit。
请注意,使用背景颜色(如您所示)在自身顶部绘制文本可能因ClearType / anti-aliasing而无效。
要回答您的第二个问题,请注意:BeginPaint
返回的DC已被EndPaint
调用有效删除,因此您无需(也不得)单独删除它。