2015-06-30 98 views
0

我在哪裏使用TextOut或DrawText?C++ DrawText和TextOut什麼都沒有顯示

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應用程序,我搜索了一個小時但沒有找到我的問題的答案。

謝謝

回答

3

Windows無法正常工作。你不能只畫一次,並期望你畫的東西永遠顯示。處理WM_CREATE時,您的窗口可能甚至不可見。

(順便說一下,您也在上面的代碼中泄漏了wdc,並將wdchdc交換)。

您需要處理WM_PAINT消息並在那裏做繪畫。撥打BeginPaint()即可獲得可供您使用的HDC,並在完成後致電EndPaint()

你應該在Win32編程中得到一本初學者書,因爲處理WM_PAINT是非常基本的東西。從MSDN文檔開始:

Painting and Drawing

+0

謝謝!我不知道從哪裏開始。 – Skathix

+0

爲什麼我可以實現按鈕或編輯框到窗口但不是文本? – Skathix

+1

@Sathathix因爲他們自己的窗戶,他們處理自己的繪畫。 –