在哪里使用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++ - C++ DrawText和TextOut什么也不显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31149440/

10-16 05:14