1,當使用者改變了視窗尺寸,或者當視窗恢複了先前被遮蓋的部分(自動調用ondraw)。或者當應用程式改變了視窗資料時,視窗都需要被重新繪製(用invalidate或invalidaterect)。
2.按照慣例,mfc庫中非待用資料成員名字以m打頭。
3.一個Csize對象是兩個CPoint對象的差,而且我們可以用一個Cpoint對象進行位移得到Crect對象。
4.要保證裝置環境對象能夠被適時地刪除掉(並且釋放掉相應的windows裝置環境)。最簡單的辦法就是
在堆棧中構造對象:CClientDC dc(this);他的洗頭函數在函數返回時被自動調用
也可以GetDC,RealeaseDC
5.如果我們需要重新編寫OnPaint函數,就需要使用CPaintDC類。
6.CDC類的SelectObject成員函數族在將gdi對象選進裝置環境的同時,還返回了指向前一次
被選對象的指標(在這個過程中它實際已被分離出來)。一個簡單的方法是在選進自己的gdi對象的同時,將原來的gdi對象也
儲存起來,任務完成之後再恢複。
7.DoDataExchange,DDX_(交換)和DDV_(確認)函數都具有雙向性。如果調用UpdateData時傳給它的參數為false,那麼函數將
資料成員中的值傳遞給對話款控制項;反之,如果參數為true,則反過來傳送
8.訪問控制項所對應的視窗對象GetDlgItem函數,可以用它將ID轉化成一個CWnd指標
例子:CScrollBar* pSB=(CScrollBar*)GetDlgItem(IDC_LOYAL);需要注意的是,這些指標是臨時的
因此不能夠被儲存供以後使用
如果需要把CWnd指標轉化成一個控制項ID,則可以使用GetCtrlID函數。
9.每個控制項在顯示之前會立刻向其父對話方塊發送WM_CTLCOLOR訊息,對話方塊本身也會發送該訊息
如果你在衍生類別對話方塊中對這訊息映射,就可以設定文本的前景色彩和背景色,同時還可為控制項或
對話方塊的非文本區選擇一個刷子。
10.如果我們只想顯示一些文本,我們可以利用對話方塊編輯器來建立一個具有特殊ID的空的靜態控制項
,然後再在對話方塊的成員函數中(如OnInitDialog)調用SetDlgItemText函數。
11.我們既要在控制項視窗內繪圖,又要防止Windows對它進行重複繪製。我們可以通過利用
Invalidate/UpdateWindow這一調用序列來達到這一效果。