C++ DrawText 和 TextOut 不显示任何内容

Ska*_*hix 1 c++ winapi

在哪里使用 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);
Run Code Online (Sandbox Code Playgroud)

我把这个放在WM_CREATE:

结果是一个空白窗口。如果需要,我可以提供更多代码,但这只是一个标准的 Win32 空白窗口。

这是我的第一个真正的 Win32 应用程序,我用 google 搜索了一个小时,但没有找到问题的答案。

谢谢

Jon*_*ter 5

Windows 不是这样工作的。你不能只画一次并期望你所画的东西永远展示出来。WM_CREATE处理时您的窗口可能甚至不可见。

(顺便说一句,您也在wdc上面的代码中泄漏,并wdc与互换hdc)。

您需要处理该WM_PAINT消息并在那里进行绘画。致电BeginPaint()获取可以使用的 HDC,EndPaint()完成后致电。

您应该获得一本有关 Win32 编程的初学者书籍,因为处理WM_PAINT是非常基本的内容。从 MSDN 文档开始:

绘画与绘画