次の方法で共有


CWnd::ScrollWindowEx

更新 : 2007 年 11 月

ウィンドウのクライアント領域の内容をスクロールします。

int ScrollWindowEx(
   int dx,
   int dy,
   LPCRECT lpRectScroll,
   LPCRECT lpRectClip,
   CRgn* prgnUpdate,
   LPRECT lpRectUpdate,
   UINT flags 
); 

パラメータ

  • dx
    水平方向のスクロール量をデバイス単位で指定します。左にスクロールするには、負の値を指定します。

  • dy
    垂直方向のスクロール量をデバイス単位で指定します。上にスクロールするには、負の値を指定します。

  • lpRectScroll
    スクロールするクライアント領域の部分を指定する RECT 構造体を指します。このパラメータが NULL の場合は、クライアント領域全体がスクロールします。

  • lpRectClip
    スクロールのためのクリッピング四角形を示す RECT 構造体を指します。この構造体は、lpRectScroll で指される四角形よりも優先されます。この四角形の内側のビットだけがスクロールします。この四角形の外側のビットは、lpRectScroll で指定された四角形の内側にあっても、影響を受けません。このパラメータが NULL のときは、スクロールする四角形はクリッピングされません。

  • prgnUpdate
    スクロールにより無効となる領域を保持するために、修正される領域を識別します。このパラメータは NULL でもかまいません。

  • lpRectUpdate
    スクロールにより無効となる四角形の境界を受け取る RECT 構造体を指します。このパラメータは NULL でもかまいません。

  • flags
    次のいずれかの値になります。

    • SW_ERASE   SW_INVALIDATE で指定された場合、ウィンドウに WM_ERASEBKGND メッセージを送信して、新しく無効になった領域を消去します。

    • SW_INVALIDATE   スクロール後、prgnUpdate で識別される領域を無効にします。

    • SW_SCROLLCHILDREN   lpRectScroll が指す四角形と交わるすべての子ウィンドウを dx と dy で指定したピクセル数だけスクロールします。lpRectScroll と交わるすべての子ウィンドウが移動しない場合でも、Windows は WM_MOVE メッセージをそれらの子ウィンドウに送信します。子ウィンドウがスクロールされ、カーソル四角形がスクロール四角形と交差するときに、カレットの位置は再設定されます。

戻り値

関数が正常終了した場合は、SIMPLEREGION (無効化された四角形領域)、COMPLEXREGION (無効化された四角形でない領域; 重なり合った四角形)、または NULLREGION (無効化される領域なし) のいずれかを返します。それ以外の場合は、ERROR を返します。

解説

この関数は、ScrollWindow 関数に類似しており、追加機能があります。

ScrollWindowExScrollWindowEx を指定しない場合は、ScrollWindowEx メンバ関数がスクロール元の領域を無効にしません。どちらかのフラグを設定すると、ScrollWindowEx がこの領域を無効にします。アプリケーションが UpdateWindow メンバ関数、または RedrawWindow メンバ関数 (RDW_UPDATENOW または RDW_ERASENOW を指定) を呼び出すか、アプリケーション キューから WM_PAINT メッセージを取得するまで、領域は更新されません。

CreateWindow スタイルのウィンドウの場合、prgnUpdate と lpRectUpdate で返される領域は、ウィンドウのスクロールによって更新が必要になったすべての領域です。子ウィンドウ内に更新の必要な領域があれば、この領域も含まれます。

SW_SCROLLCHILDREN フラグが指定されている場合、子ウィンドウの一部がスクロールされると、Windows は画面が正しく更新しません。スクロールした子ウィンドウの領域が元の四角形からはみ出すと、その部分は削除されず、スクロール先に正しく再描画されません。lpRectScroll 四角形から一部でもはみ出している子ウィンドウを移動するには、DeferWindowPos Windows 関数を使用します。SW_SCROLLCHILDREN フラグを設定した場合は、カレット四角形がスクロール四角形と交差すると、カーソルが再配置されます。

ウィンドウのクラス スタイルが CS_OWNDCCS_CLASSDC かに関係なく、入出力座標 (lpRectScroll、lpRectClip、lpRectUpdate、および prgnUpdate 用) はすべてクライアント座標にあるものと想定します。必要に応じて、論理座標との変換を行うには、LPtoDP Windows 関数および DPtoLP Windows 関数を使用します。

必要条件

ヘッダー : afxwin.h

参照

参照

CWnd クラス

階層図

CWnd::RedrawWindow

CDC::ScrollDC

CWnd::ScrollWindow

CWnd::UpdateWindow

DeferWindowPos

ScrollWindowEx

その他の技術情報

CWnd のメンバ