gpt4 book ai didi

c++ - DrawText 只显示第一次调用

转载 作者:行者123 更新时间:2023-11-30 02:09:51 31 4
gpt4 key购买 nike

我在 Win32 程序中使用 DrawText 函数在屏幕顶部中央显示“本地”,在中央显示“服务器”。当我运行程序时,它显示“本地”而不是“服务器”。这是我的消息循环中的代码:

case WM_PAINT:
{
RECT localLabel;
localLabel.left = 0;
localLabel.top = 0;
localLabel.right = 270;
localLabel.bottom = 20;
PAINTSTRUCT localPs;
HDC localHandle = BeginPaint(hwnd, &localPs);
DrawText(localHandle, "Local", -1, &localLabel, DT_CENTER);
EndPaint(hwnd, &localPs);

PAINTSTRUCT serverPs;
RECT serverLabel;
serverLabel.left = 0;
serverLabel.top = 100;
serverLabel.right = 270;
serverLabel.bottom = 20;
HDC serverHandle = BeginPaint(hwnd, &serverPs);
DrawText(serverHandle, "Server", -1, &serverLabel, DT_CENTER);
EndPaint(hwnd, &serverPs);
}
break;

我尝试使用相同的 PAINTSTRUCT,但这没有帮助。我尝试使用相同的 HDC,但这也无济于事。如何在屏幕上显示两者?

谢谢。

最佳答案

您的第二个矩形无效(bottom 应该是 120 而不是 20 因为它是实际的底部坐标,而不是高度)。此外,您必须在调用 EndPaint() 之前渲染这两个字符串:

PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);

RECT localLabel;
localLabel.left = 0;
localLabel.top = 0;
localLabel.right = 270;
localLabel.bottom = 20;
DrawText(hdc, "Local", -1, &localLabel, DT_CENTER);

RECT serverLabel;
serverLabel.left = 0;
serverLabel.top = 100;
serverLabel.right = 270;
serverLabel.bottom = 120;
DrawText(hdc, "Server", -1, &serverLabel, DT_CENTER);

EndPaint(hwnd, &ps);

最后,顺便说一句,您可能不想将所有代码都留在窗口过程的一个 case 语句中。考虑将其移至自己的函数中以提高可读性(和可维护性)。

关于c++ - DrawText 只显示第一次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5050648/

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