onDraw和onPaint函數的區別

onDraw和onPaint函數的區別
 
轉自:http://hi.baidu.com/ncudlz/blog/item/6ccbc43d90836305baa16715.html
 

CWnd::OnPaint() 是CWnd類的成員函數,是WM_PAINT 消息的響應函數.當你調用CWnd::UpdateWindow(),CWnd::RedrawWindow()時, 或者窗口被其他窗口覆蓋,改變大小等事件就會產生WM_PAINT 消息. 你可以在CWnd派生的子類中使用它.

CView::OnDraw()是CView類的一個純虛函數.你要使用,必須重載它.
CView::OnPaint()會調用它.
OnPaint是收到WM_PAINT消息時所調用的,OnPaint調用OnDraw函數,而由於OnDraw是虛擬函數,你可以自己改寫,所以就實現了,不同的繪圖目的
ondraw用於cview,而onpaint用於cdialog

onpait 響應WM_PAINT消息,在CView中,它接着調用OnDraw
CPaintDC響應wm_paint消息,自動完成繪製
ClientDC實時繪製

一般情況下,你看不到兩個函數有什麼太大區別,因爲一般情況下,它們的任務都是重畫窗口。
在CView及其子類中,恰如浪刀所言,OnDraw是由OnPaint調用的,也就是你可以像在窗口類中一樣,調用Invalidate函數導致,OnDraw的調用(當然,Invalidate是先導致OnPaint的調用)。
要說OnDraw和OnPaint有什麼區別,那就是它除了可以把畫畫到屏幕外,還可以把它畫到其它任何標準輸出設備,如打印機

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章