InvalidateRect函數是MFC中用來使窗口區域無效,強制系統重繪的函數。其用法如下:
1. 在窗口類中聲明InvalidateRect函數:
afx_msg void OnPaint();
2. 在窗口類的消息映射中添加OnPaint函數的處理:
BEGIN_MESSAGE_MAP(CMyWnd, CWnd)????//…
????ON_WM_PAINT() END_MESSAGE_MAP()
3. 實現OnPaint函數,在其中進行繪圖操作:
void?CMyWnd::OnPaint() {????CPaintDC?dc(this);?//?設備上下文
????//?繪圖操作
????//?… }
4. 在需要使窗口區域無效的地方調用InvalidateRect函數:
InvalidateRect(&rect);
其中,rect為需要無效化的矩形區域。
當調用InvalidateRect函數后,系統會發送WM_PAINT消息給窗口類的窗口過程函數,從而觸發OnPaint函數的調用,進而進行重繪操作。
需要注意的是,InvalidateRect函數只是將窗口區域標記為無效,并不會立即進行重繪操作,而是在系統空閑時進行重繪。如果需要立即重繪,則可以調用UpdateWindow函數。