更新區(qū)域(無效區(qū)域)指的是窗口內過時的或無效的需要重新繪制的區(qū)域。MiniGUI 根據(jù)需要更新的區(qū)域為應用程序產(chǎn)生MSG_PAINT 消息,應用程序也可以通過設置無效區(qū)域來產(chǎn)生MSG_PAINT 消息。
應用程序可以使用InvalidateRect 函數(shù)來使窗口的某一區(qū)域無效。該函數(shù)原型如下: BOOL GUIAPI InvalidateRect (HWND hWnd, const RECT* PRc, BOOL bEraseBkgnd)
各參數(shù)意義如下:
hWnd 需要更新的窗口句柄prc 指向無效矩形的指針bEraseBkgnd 是否擦除窗口背景InvalidateRect 函數(shù)把給定的矩形區(qū)域添加到指定窗口的更新區(qū)域中。該函數(shù)把給定的矩形和應用程序窗口先前的更新區(qū)域合并,然后投遞一MSG_PAINT 消息到該窗口的消息隊列中。
如果bEraseBkgnd 為TRUE,應用程序窗口將收到一個MSG_ERASEBKGND 消息,窗口過程可以處理該消息,自行擦除窗口背景。如果應用程序不處理MSG_ERASEBKGND 消息而將它傳給DefaultMainWinProc,MiniGUI 對MSG_ERASEBKGND 消息的默認處理方式是以窗口的背景色為畫刷擦除背景。
窗口背景是指繪制窗口之前用于填充客戶區(qū)的顏色和風格。窗口背景可以覆蓋屏幕上窗口客戶區(qū)所在區(qū)域的原有內容,使得應用程序的輸出顯示不受屏幕已有內容的干擾。
MSG_ERASEBKGND 消息的lParam 參數(shù)包含了一個RECT 結構指針,指明應該擦除的矩形區(qū)域,應用程序可以使用該參數(shù)來繪制窗口背景。繪制完成之后,應用程序可以直接返回零, 無需調用DefaultMainWinProc 進行缺省的消息處理。
新聞熱點
疑難解答