OnDraw和OnPaint函式的區別

2021-06-18 09:48:59 字數 705 閱讀 6241

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有什麼區別,那就是它除了可以把畫畫到螢幕外,還可以把它畫到其它任何標準輸出裝置,如印表機。

OnDraw和OnPaint的區別

1 cview類是由cwnd類派生而來的,ondraw是cview類的虛函式,onpaint是cwnd的類成員函式,負責相應wm paint訊息。2 一般是這樣 視窗發出乙個wm paint訊息,onpaint函式響應這個訊息,然後這個函式再呼叫ondraw函式。雖然cview類中的ondraw函式...

OnPaint和OnDraw的區別

問題 我在檢視畫的圖象或者文字,當視窗改變後為什麼不見了?ondraw 和onpaint 兩個都是解決上面的問題,有什麼不同?答 ondraw 和onpaint 好象兄弟倆,因為它們的工作類似。至於不見了的問題簡單,因為當你的視窗改變後,會產生無效區域,這個無效的區域需要重畫。一般windows會傳...

OnPaint和OnDraw的區別

問題 我在檢視畫的圖象或者文字,當視窗改變後為什麼不見了?ondraw 和onpaint 兩個都是解決上面的問題,有什麼不同?答 ondraw 和onpaint 好象兄弟倆,因為它們的工作類似。至於不見了的問題簡單,因為當你的視窗改變後,會產生無效區域,這個無效的區域需要重畫。一般windows會傳...