我在哪里使用 TextOut 或 DrawText?
TCHAR text[]= "My First Window";
RECT rc;
HDC wdc = GetWindowDC(hWnd);
GetClientRect (hWnd, &rc);
SetTextColor(wdc, 0x00000000);
SetBkMode(wdc,TRANSPARENT);
rc.left=40;
rc.top=10;
TextOut(hdc,rc.left,rc.top,text,ARRAYSIZE(text));
EndPath(hdc);
SelectClipPath(hdc, RGN_AND);
我将它放在 WM_CREATE:
中
结果是一个空白窗口。如果需要,我可以提供更多代码,但这只是一个标准的 Win32 空白窗口。
这是我的第一个真正的 Win32 应用程序,我用谷歌搜索了一个小时,但没有找到问题的答案。
谢谢
最佳答案
Windows 不是那样工作的。你不能只画一次就期望你画的东西永远被展示。在处理 WM_CREATE
时,您的窗口可能甚至不可见。
(顺便说一句,您还在上面的代码中泄漏了 wdc
,并将 wdc
与 hdc
互换)。
您需要处理 WM_PAINT
消息并在其中进行绘制。调用BeginPaint()
获得一个 HDC,你可以使用它,然后调用 EndPaint()
完成后。
您应该读一本 Win32 编程初学者的书,因为处理 WM_PAINT
是非常基础的东西。从 MSDN 文档开始:
关于C++ DrawText 和 TextOut 不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31149440/