2013-08-19 54 views
1

我想繪製一個顏色表(已經構建)到我窗口中的選定區域。
我目前正在從this來源學習。然而,在所有給出的代碼示例中,只要窗口打開,繪圖就會執行。當調用時繪製

如果我希望在單擊菜單項時出現圖形,或者不想在開始時發生圖形,應該怎麼做?

編輯:

我創建了一個名爲GifPanel新的窗口,它會被吸引。

我的變量:

HWND GifPanel; 
RECT r; 

GifPanelProc:

case WM_PAINT: 
    DrawFrame(GifPanel); // DrawFrame uses BeginPaint, SetPixel, EndPaint in order to draw 
    break; 

接下來,我有通過點擊執行以下功能:

GetClientRect(GifPanel, &r); 
InvalidateRect(GifPanel, &r, FALSE); 

當第一次打開的窗口中,我可以看到GifPanel有一個紅色背景(只是爲了測試它正在工作)。

執行上述過程後,沒有像素髮生變化。你能解釋爲什麼嗎?

+0

閱讀Petzold的書。 –

回答

4

只要收到WM_PAINT消息,就需要一個窗口來繪製自己;通常它會首先獲得WM_ERASEBKGND消息來清除背景。如果您不想繪製表格,則需要在WM_PAINT處理程序中保留一個可以測試的標誌以跳過表格的繪製。

在您的菜單處理程序中,首先設置標誌,然後使用InvalidateRect導致生成WM_PAINT消息。

+0

你可以請檢閱我的編輯?我在執行解決方案時遇到了一些問題。 – Novak

+0

做一些調試。你顯示的東西看起來不錯,但是你沒有顯示繪畫的代碼。該代碼是否執行?你有沒有試過讓它畫一個矩形,這樣你就可以看到它正在使用的座標? –

相關問題