下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第C++Invalidaterect()函數(shù)作用案例詳解HWNDhWnd,//handleofwindowwithchangedupdateregion窗口句柄。
CONSTRECT*lpRect,//addressofrectanglecoordinatesrect結(jié)構(gòu)體的指針。
BOOLbErase//erase-backgroundflag是否要發(fā)送WM_ERASEBKGND消息從而擦除原來的背景
);
這個函數(shù)的作用是,使得Client的一個矩形區(qū)域變得無效,rect結(jié)構(gòu)體可以自己編輯,也可以使用GetClientRcet()來填充(這里的矩形大小Client的大?。钪饕氖堑谌齻€參數(shù),第三個參數(shù)決定了是否發(fā)送WM_ERASEBKGND消息,從而決定了是否擦除Client原有的圖形。當然InvalidateRect發(fā)送WM_PAINT的形式是一種POST形式(即發(fā)送到程序消息隊列),而不是像SendMessage一樣直接讓操作系統(tǒng)帶著消息,調(diào)用WndProc。
當然如果想像SendMessage一樣的??梢栽诤竺娼又褂肬pdateWindow()直接繞過程序消息隊列直接發(fā)送消息到WndProc函數(shù),來重繪窗口。
分析一下下面的程序會更加的清晰:
caseWM_RBUTTONDOWN:
hdc=GetDC(hwnd);
GetClientRect(hwnd,rect);
DrawText(hdc,TEXT("右鍵鍵被單機咯!"),13,rect,DT_VCENTER|DT_SINGLELINE);
ReleaseDC(hwnd,hdc);
InvalidateRect(hwnd,NULL,true);
//UpdateWindow(hwnd);
Sleep(1000);
return0;
caseWM_LBUTTONDOWN:
hdc=GetDC(hwnd);
GetClientRect(hwnd,rect);
DrawText(hdc,TEXT("左鍵被單機咯!"),13,rect,DT_CENTER|DT_SINGLELINE);
ReleaseDC(hwnd,hdc);
return0;
這里為了能看到效果我使用了Sleep。在實際編程處理消息,不是在多線程時,這樣的使用是十分愚蠢的,因為,消息循環(huán)的機制,如果你不快速的處理每一條消息。用戶的體驗將會受到很大的影響。比如,,無法操作,,這是最尷尬的。
1,這里如果UpdateWindow(hwnd)被注釋掉的情況下,單機左鍵后,客戶區(qū)屏幕打印出左鍵被單機咯,單機右鍵后打印出右鍵被單機咯。隨后,調(diào)用了InvalidateRect()發(fā)送了WM_PAINT和WM_ERASEBKGND消息到消息隊列,因為Invalidate第三個參數(shù)是true所以背景被重畫,并且使rect的矩形范圍失效。從而延遲1000ms后,處理WM_PAINT消息后,窗口上的左鍵…右鍵…..的字樣都被清除。
2,如果UpdateWindow(hwnd)沒被注釋掉。左鍵單機,右鍵單機,出現(xiàn)兩條提示后,立即都消失(一般情況看不到右鍵點擊的提示,而是直接擦除左鍵點擊的提示的效果),為什么呢,因為UpdateWindow的作用,直接繞過隊列,帶到WndProc中去。所以直接重繪了。
3.如果InvalidateRect里面是false則結(jié)果將是沒有任何效果。難道真的是沒有效果嗎。當然不是,實際上是有效果的。因為,這里InvalidateRect還是使得rect的區(qū)域失效了,只是不會擦除背景也就是原來打印在屏幕上的提示都不會被清除。而且還是發(fā)送了WM_PAINT消息,所以WM_PINT消息內(nèi)的處理,會執(zhí)行一次。
4.第三種情況,不就是使得區(qū)域無效,而且發(fā)送了WM_PAINT消息嗎。實際上,就算不發(fā)送WM_PAINT消息,系統(tǒng)也會派送WM_PAINT消息。因為無效了。我又想到UpdateWindow不也是給WndPro帶來了WM_PAINT消息嗎?窗口
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省珠海市金灣區(qū)2025-2026學(xué)年度第一學(xué)期期末七年級地理試題(無答案)
- 養(yǎng)老院入住資格審核制度
- 信息安全與保密管理制度
- 空調(diào)公司管理制度廣告宣傳管理規(guī)定樣本
- 乙烯裝置操作工崗后知識考核試卷含答案
- 我國上市公司獨立董事薪酬激勵制度:現(xiàn)狀、問題與優(yōu)化路徑
- 我國上市公司換股合并中股東主動退出制度的多維審視與完善路徑
- 助聽器驗配師持續(xù)改進考核試卷含答案
- 硅烷法多晶硅制取工崗前創(chuàng)新實踐考核試卷含答案
- 化工萃取工操作規(guī)范評優(yōu)考核試卷含答案
- 跨境藥物輸送監(jiān)管難題-洞察及研究
- 《食品微生物學(xué)》課程標準
- 肥胖患者麻醉管理課件
- 多傳感器融合技術(shù)在火災(zāi)檢測仿真系統(tǒng)中的應(yīng)用研究
- 公司退貨流程管理制度
- 術(shù)后鎮(zhèn)痛的護理課件
- 《建筑施工常見問題》課件
- 交易賬戶托管協(xié)議書
- 正步走教學(xué)課件
- 商砼站合伙投資協(xié)議書6篇
- 2024-2025學(xué)年浙江省杭州市余杭區(qū)五年級(上)期末數(shù)學(xué)試卷
評論
0/150
提交評論