gpt4 book ai didi

c++ - 如何清除 TextOut?

转载 作者:行者123 更新时间:2023-11-28 04:08:40 25 4
gpt4 key购买 nike

如何删除或隐藏当前文本以添加新文本?目前,当他添加另一个文本时,文本与文本重叠。我尝试使用 InvalidateRect(hWnd, NULL, TRUE); 但我没有看到任何区别。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;

switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 5, 5, text.c_str(), _tcslen(_T(text.c_str())));
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}

return 0;
}

最佳答案

您对 TextOut 的调用在您的 WM_PAINT 处理程序中。这意味着文本将始终绘制在每个 WM_PAINT 上,使您对 InvalidateRect 的调用实际上毫无用处。

解决此问题的一种方法是使用 bool 值 (drawText) 来指示您是否要绘制文本。然后在你的函数中清除文本:

drawText = FALSE;
InvalidateRect(hWnd, NULL, TRUE);

在你的 WndProc 中:

case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
if(drawText)
TextOut(hdc, 5, 5, text.c_str(), _tcslen(_T(text.c_str())));
EndPaint(hWnd, &ps);
}
break;

关于c++ - 如何清除 TextOut?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58260966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com