ScrollWindowEx

Windows API(Application Programming Interface,應用程式編程接口)函式,該函式滾動指定窗體客戶區域的目錄。

基本介紹

  • 中文名:ScrollWindowEx
  • Windows CE:不支持
  • Windows NT:3.1
  • 頭檔案:winuser.h
函式原型,函式參數,ScrollWindowEx和ScrollDC的比較,相同點,不同點,

函式原型

int ScrollWindowEx(
HWND hWnd, // handle to window
int dx, // horizontal scrolling
int dy, // vertical scrolling
CONST RECT *prcScroll, // client area
CONST RECT *prcClip, // clipping rectangle
HRGN hrgnUpdate, // handle to update region
LPRECT prcUpdate, // invalidated region
UINT flags // scrolling options
);

函式參數

hWnd:客戶區域將被滾動的窗體句柄。
dx:在設備單元中,指定水平滾動數量。在向左滾動時此參數必須為負。
dy:在設備單元中,指定垂直滾動數量。在向上滾動時此參數必須為負。
prcScroll:指向RECT結構,它指定了將被滾動的客戶區域部分。
prcClip:指向包含了類似於被剪下矩形的RECT結構。只有在剪下內部的小塊圖形才受影響。從矩形外向內部的滾動部分將被著色;而從內向外的滾動部分將不再被著色。
hrgnUpdate:處理已被修改的區域,保存這些由於滾動而無效的區域。此參數可以為空。
prcUpdate:指向RECT結構,它接收由於滾動使得矩形無效部分的邊界。此參數值可以為空。
flags:指定控制滾動的標誌。這個參數可以是下面的值:
SW_ERASE:通過傳送WM_ERASEBKGND訊息給窗體。
SW_INVALIDATE:在滾動後,使得由參數hrgnUpdate標識的無效區域被擦除。
SW_SCROLLCHILDREN:動所有由參數prcScroll指出交叉重疊矩形的子窗體。子窗體按照dx和dy規定的像素個數滾動。系統傳送訊息給所有由prcScroll指出交叉重疊矩形的子窗體,即使他們不移動。
返回值:如果函式運行成功,返回值為SIMPLEREGION(矩形的無效區域),COMPLEXREGION(非矩形的無效區域)或NULLREGION(沒有使無效的區域)如果函式運行失敗,返回值為ERROR。若想獲得更多的錯誤信息,請調用GetLastError函式。
注意:如果SW_INVALIDATE和SW_ERASE標誌沒有被設定,那么函式ScrollWindowEx不能使滾動離開的區域失效。如果其中任意一個標誌被設定,ScrollWindowEx函式就可以使區域無效。這塊區域將不再被更新直到應用程式調用theUpdateWindow函式,調用theRedrawWindow函式(指定RDW_UPDATENOW或RDW_ERASENOW標誌)或是從申請佇列中找到WM_PAINT訊息。
如果窗體擁有WS_CLIPCHILDREN類型,那么由hrgnUpdate和prcUpdate指定的返回區域描述了必須更新的滾動窗體的全部區域,包括所需更新子窗體的任何區域。
若SW_SCROLLCHILDREN標誌被設定,在子窗體被滾動時,系統將不能完全更新螢幕。位於矩形外邊的滾動子窗體部分不被擦除,也不在它的新方向上被重畫。為了移動子窗體使之完全不在prcScroll指定的矩形條中,可使用DeferWindowPos函式。若標誌SW_SCROLLCHILDREN被設定並且^符號交叉滾動矩形,則游標也重新設定。
所有輸入輸出均被定義為客戶端如果有必要,使用IptoDP和dptoLP函式轉換邏輯相關性。
Windows CE:參數flags不支持SW_SCROLLCHILDREN。參數dx和dy中只有一個為零。
速查:Windows NT 3.1、Windows 95、Windows CE 1.0以上,頭檔案:winuser.h;庫檔案:user32.lib。

ScrollWindowEx和ScrollDC的比較

相同點

a)兩者都可以將某區域滾動到另外一區域,同時計算髒區域。
b)兩者最終的實現都是通過內部的BitBlt實現的
c)如果要對重繪的區域進行精細的管理和計算,則傳入hrfgUpdate,否則傳入prcUpdate即可。

不同點

a)ScrollDC只是用於DC,因此它不會發出WM_PAINT進行重繪;而ScrollWindowEx則會。另外就是ScrollWindowEx還可以在滾動時進行其他控制,見flags的值。
b)如果需要滾動整個客戶區,則需要用到ScrollWindowEx(來自MSDN),個人覺得ScrollDC也可以實現。

相關詞條

熱門詞條

聯絡我們