OnPaint()與OnDraw的區別

2021-05-17 22:55:29 字數 759 閱讀 7057

onpaint()與ondraw的區別:

1、invalidate()和invalidaterect()其實是觸發對onpaint()函式的呼叫,  

onpaint()函式呼叫ondraw()函式,  

ondraw函式還需要同時支援印表機輸出。onpaint()函式和onprint()函式都要呼叫ondraw(),於是同樣的繪圖**既可以用於螢幕輸出,也可以用於印表機輸出  

在程式設計中,一般過載ondraw()就可以了。如果定義了onpaint()函式,並且在ondraw()裡面有要顯示的內容,那麼需要顯示的呼叫ondraw(),即ondraw(&dc)。

2、ondraw()是被onpaint()呼叫的虛函式,在cview中定義為純虛函式,因此必須被過載,其裝置上下文由onpaint()提供。  

onpaint()是響應訊息wm_paint的響應函式,預設實現中在,先呼叫beginpaint(),最後呼叫endpaint。  

建議程式設計時使用ondraw。 

3、cview封裝了兩個函式,onpaint()與onprint(),分別對應wm_paint與wm_print。mfc為了提供更標準簡易的程式設計介面,所以又提供了ondraw()這個函式。ondraw()將被onpaint()或onprint()呼叫,根據二者分別傳進來的不同dc(paint dc或printdc),從而完成螢幕繪製或列印工作,而不需再為兩種情況分別寫**。當然,如果你只關心螢幕繪製工作,而不關心列印問題,那你完全可以直接過載onpaint()完成繪製,而不使用ondraw()。

OnPaint 與OnDraw的區別

首先我們要知道,onpaint 是cwnd的類成員函式,負責響應wm paint訊息。其次,在單文件應用程式中,cview派生自cwnd。在對話方塊應用程式中,cdialog也派生自cwnd。也就是說cview和dialog都繼承了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會傳...