理解InvalidateRect函式

2021-06-19 01:21:45 字數 1266 閱讀 8892

bool invalidaterect(

__in  hwnd hwnd,

__in  const rect *lprect,

__in  bool berase

);//該函式呼叫後會產生 wm_paint訊息

hwnd   哪個視窗要更新 為null表示所有視窗(不僅僅是本程式視窗) 不推薦設成null

lprect 要更新的矩形區域

berase 如果是true 表示beginpaint函式呼叫時lprect所指的區域被擦除  否則不擦除

案例說明: 客戶區有一方框rect(0,0,100,100) 單擊在方框裡畫一對角線  再單擊消失 再單擊又出現

static bool bflag;//bflag是1時顯示 0時消失 

case wm_lbuttondown:

bflag ^= 1;

invalidaterect(hwnd, &rect, false);//究竟應該true 還是false呢

return 0;

case wm_paint :

hdc = beginpaint( hwnd,&ps);

hbrush = getstockobject( gray_brush);

selectobject( hbrush);

setrect(&rect, 0, 0, 100, 100);//畫矩形 僅僅 邊框不填充內部

framerect(hdc, &rect, hbrush);

//rectangle( hdc, 0, 0, 100, 100);//邊框 且 填充內部

if(bflag)

lineto(100,100);

endpaint(hwnd,&ps);

return 0 ;

現象:invalidaterect函式   berase=false時 用framerect對角線出現後再次單擊 對角線不消失

berase=true時  用framerect對角線出現後再次單擊 對角線消失

berase=false時 用rectangle對角線出現後再次單擊 對角線消失

berase=true時  用rectangle對角線出現後再次單擊 對角線消失  

分析:berase=false時 不擦除lprect所指區域 wm_paint中已經不畫對角線 而framerect只畫邊框內部不填充 所以對角線仍然存在(是上次畫的)

berase=false時 不擦除lprect所指區域 雖然wm_paint中已經不畫對角線rectangle會填充內部 所以對角線消失了

dropout理解 簡易理解

所謂的dropout,從字面意思理解,就是 拋棄 拋棄什麼呢?拋棄的是網路中隱藏層的節點 輸入層和輸出層是由資料型別和問題型別決定的,當然不能動啦!怎麼拋棄呢?dropout有乙個引數p,p的取值介於0和1,含義是每個節點有p概率被拋棄。被拋棄對這個節點有什麼影響呢?dropout對於節點的影響表現...

怎麼理解ESB(純屬個人理解)

背景,隨著公司系統越來越多,系統之間的互動也越來越多,如果服務之家沒有相應的管理支撐的話,將會出現各種點對點,混亂不堪,對於服務之間的解決方案有很多種,這裡介紹下,目前公司用到的,基於soa思想的esb,企業服務匯流排。esb 同步過程可以理解為中介或者 類似 非同步可以理解為快取資料庫,所有客戶端...

MapReduce理解 深入理解MapReduce

化簡 reducing 遍歷集合中的元素來返回乙個綜合的結果。即,輸出表單裡一列數字的和這個任務屬於reducing。input,資料讀入 123456 設定資料輸入 fileinputformat.setinputpaths job,args 0 fileinputformat.setinputd...