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