MFC重繪視窗函式

2021-07-04 16:41:24 字數 548 閱讀 2746



一:什麼時候才會發生重繪視窗的訊息?

當需要更新或重新繪製視窗的外觀時,應用程式就會傳送wm_paint訊息。對視窗進行重新繪製。

二:invalidate() -- redrawwindow() -- updatewindow()三個函式有什麼異同?

invalidate()是強制系統進行重畫,但是不一定就馬上進行重畫。因為invalidate()只是通知系統,此 時的視窗已經變為無效。強制系統呼叫wm_paint,而這個訊息只是post就是將該訊息放入訊息佇列。當執行到wm_paint訊息時才會對敞口進行重繪。

updatewindow()只向窗體傳送wm_paint訊息,在傳送之前判斷getupdaterect(hwnd,null,true)看有無可繪製的客戶區域,如果沒有,則不傳送wm_paint。

redrawwindow()則是具有invalidate()和updatewindow()的雙特性。宣告視窗的狀態為無效,並立即更新視窗,立即呼叫wm_paint訊息處理。

MFC 視窗的重繪

根據視窗的大小的變化重繪視窗 新增 乙個視窗訊息 on wm size 注意是在dlg類中 例如有 clistctrl 這樣乙個控制項,給這個控制項新增了變數名之後,再 on wm size 對應的函式 onsize 裡面新增 if m clistonline.m hwnd null 在視窗初始化的...

MFC的視窗重繪

在重新整理視窗時經常要呼叫重繪函式 mfc提供了三個函式用於視窗重繪 invalidaterect rect invalidate updatewindow 當需要更新或者重繪視窗時,一般系統會發出兩個訊息wm paint 通知客戶區有變化 和wm ncpaint 通知非客戶區有變化 wm nvpa...

MFC控制項背景重繪

mfc中改變dialog背景色和控制項底色,一般採取過載onctlcolor cdc pdc,cwnd pwnd,uint nctlcolor onctlcolor是控制項視窗函式 其畫刷控制代碼效果提示資訊函式 afx msg hbrush onctlcolor 構成 返回值,onctlcolor...