windows程式設計 關於InvalidateRect的引數問題

2022-12-31 21:15:22 字數 1647 閱讀 1400

1樓:歸悅欣

背景重新整理是在函式onerasebkgnd函式裡進行,可以參考該函式說明。

2樓:匿名使用者

額?我怎麼發現這個函式就兩個引數呢

invalidaterect函式到底如何使用

3樓:匿名使用者

該函式向指定的窗體更新區域新增一個矩形,然後視窗客戶區域的這一部分將被重新繪製。

bool invalidaterect(

hwnd hwnd, // handle of window with changed update region

const rect *lprect, // address of rectangle coordinates

bool berase // erase-background flag

);引數:

hwnd:要更新的客戶區所在的窗體的控制代碼。如果為null,則系統將在函式返回前重新繪製所有的視窗, 然後傳送wm_erasebkgnd 和 wm_paint 給視窗過程處理函式。

lprect:無效區域的矩形代表,它是一個結構體指標,存放著矩形的大小。如果為null,全部的視窗客戶區域將被增加到更新區域中。

berase:指出無效矩形被標記為有效後,是否重畫該區域,重畫時用預先定義好的畫刷。當指定true時需要重畫。

返回值:

函式成功則返回非零值,否則返回零值。

說明:被標記為無效矩形的區域直到wm_paint訊息被處理完之後才會消失,或者使用validaterect(),validatergn()函式來使之有效。當應用程式的訊息佇列中為空時,並且窗體要更新的區域非空時,系統會傳送一個wm_paint訊息到窗體。

這兩個都用於宣告客戶區無效,當下一個wm_paint訊息到來時發生重畫。

其中invalidaterect(hwnd, null, true);重畫時將擦除背景。

invalidaterect(hwnd, null, false);重畫時不擦除背景

需要:windows nt/2000/xp/vista: 包含windows nt 3.1以及之後版本。

windows 95/98/me: 包含windows 95 以及之後版本。

header: 宣告在 winuser.h中; 包含在windows.h中。

library: use user32.lib.

sdk程式設計,使用invalidaterect函式快速重新整理介面,介面突然就變成全白色是為什麼?

4樓:匿名使用者

先用invalidate()函式替換invalidaterect,全視窗重新整理看看是不是白屏。

如果是,那麼問題出在介面更新,登出定時器重新整理**,看看最小化視窗再還原是不是白屏,如果是,具體檢查wm_paint的響應**吧,沒**沒法說。

如果不是。。。就不好玩了,這個很可能是其它函式**造成的記憶體錯誤之類的造成的。

5樓:匿名使用者

後邊加updatewindow()試試

invalidaterect(hwnd, null, false);

6樓:匿名使用者

每次都會更新hwnd控制代碼所代表的介面

Windows程式設計是不是很小眾了

感覺需求不多了,關注度也少多了 想用c c 寫windows程式設計,又不想學mfc怎麼辦?c 用api來寫程式,朋友,沒有介面,你難道要用繪畫來繪介面嗎?一個對話方塊放幾個按扭,比用api來實現快得多,而且也更復合群眾 win32 api 細節非常多,剛開始是要好好學習嚇,瞭解了基本原理才能寫得出...

關於程式設計效率問題

如果說提高效率的技巧,那對各種演算法和資料結構的時間複雜度和空間複雜度的把握,才是正確的途徑。這些應該在各種演算法和資料結構的書上都有介紹。這只能在你工作過程中體會。至於區域性的程式設計技巧,基本都零散在語言的基本教材裡。不過,如果說這種區域性優化的書倒也是有。但不建議從這方面入手。另外,如果有興趣...

關於windows啟動問題,關於Windows系統啟動問題

重新啟動按 f8鍵 進入安全模式 進入登錄檔 開始 執行 輸入regedit 進入後找到hkey local machine software,然後找到這兩個防毒軟體的任意一個,刪除它 卡巴斯基 kaspersky v5.0.676 pro 漢化中文正式版 1年授權檔案 最新的,05.28更新 到安...