我製作了一個自定義非客戶區域的程序。除了處理WM_NCPAINT之外,我還將WM_NCCALCSIZE中的客戶區大小設置爲零,然後通過處理WM_NCHITTEST來模擬非客戶區。所有繪製到窗口的內容都是在WM_PAINT中處理的。當我啓動程序並且程序需要重新繪製時,WM_PAINT工作正常。但是,一旦我通過調用ShowWindow(hwnd,SW_MINIMIZE)來最小化程序,然後通過在任務欄中單擊它來還原程序,WM_PAINT不再有效。我檢查了WM_PAINT中的每個函數調用,它們都返回成功,但窗口只顯示爲黑色。任何人有什麼想法爲什麼?WM_PAINT在最小化和恢復窗口後停止工作
下面是我的WM_PAINT處理程序的代碼:
下面是輸出到控制檯窗口:
BeginPaint的成功
hdcBuffer有效
MainWindow- > hbmBuffer有效
hdcMem有效
所以,看到我在WM_PAINT處理每一個函數調用返回成功,爲何顯示爲黑色的我的整個窗口?
你不是應該在這種情況下,使用'WM_NCPAINT'? – pezcode 2012-02-25 14:44:04
@pezcode它並不重要,因爲這兩個處理程序基本上都是一樣的。 – Gogeta70 2012-02-25 14:56:56
我已經解決了這個問題,我會在6-7小時內添加答案,當stackoverflow將讓我> _ < – Gogeta70 2012-02-25 15:53:08