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

标签 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);

我将它放在 WM_CREATE:

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

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

谢谢

最佳答案

Windows 不是那样工作的。你不能只画一次就期望你画的东西永远被展示。在处理 WM_CREATE 时,您的窗口可能甚至不可见。

(顺便说一句,您还在上面的代码中泄漏了 wdc,并将 wdchdc 互换)。

您需要处理 WM_PAINT 消息并在其中进行绘制。调用BeginPaint()获得一个 HDC,你可以使用它,然后调用 EndPaint()完成后。

您应该读一本 Win32 编程初学者的书,因为处理 WM_PAINT 是非常基础的东西。从 MSDN 文档开始:

Painting and Drawing

关于C++ DrawText 和 TextOut 不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31149440/

相关文章:

windows - 指示 win32 线程在单个处理器内核上运行

c# - 如何使用全局 Hook 确定按下的键的主机应用程序?

windows - 创建DIBSection : Return value vs error

c++ - 打开对话框

c++ - 运行时功能测试、setjmp、longjmp 和信号掩码

windows - 如何编写一个以 SYSTEM 权限运行的 Windows 8 软件?

c++ - MFC 自定义控件未出现在对话框中

c++ - 如果应用程序使用不同的用户凭据启动,则CertFindCertificateInStore无法找到证书

c++ - POD对象 vector 的内存布局

c++ - 如何确定编译器对元程序做了什么? (对于 boost.proto)