ホーム ATL/WTL
砂時計カーソル
ドキュメント種別 ATL/WTL に関する文書
最終更新日 2007/03/25
PR
 WTLはウィンドウ上のカーソルを簡単に変更するためにCWaitCursorクラスを用意しています。 このクラスはatlctrlx.hヘッダに定義されています。 次に示すのはCWaitCursorクラスの最も簡単な使用方法です。

// ある関数
void function(){
    CWaitCursor cursor;

    // 時間のかかる処理
}
			

CWaitCursorクラスのコンストラクタには3つの引数を指定できます。 第1引数はインスタンスを作成した直後にカーソルを変更するかどうかを示すbool値で、 trueを指定すると内部でSet()というメンバ関数が呼び出されてすぐにカーソルが変わります。 第2引数はカーソルリソース名、第3引数はシステムカーソルを使うかどうかを示すbool値です。 これらの引数はすべて省略でき、省略した場合はデフォルト引数として順にtrue、IDC_WAIT、trueが指定されます。 上の例ではコンストラクタ引数を省略しているため、カーソルが砂時計カーソルになります。 CWaitCursorクラスのデストラクタではRestore()というメンバ関数が呼び出され、 カーソルが元に戻ります。

 Set()Restore()は明示的に呼び出すこともできます。 次に示すのは、前述の例と同じ処理をメンバ関数を明示的に呼び出して実行する例です。

// ある関数
void function(){
    CWaitCursor cursor(false);
    cursor.Set();      // カーソルを変更

    // 時間のかかる処理

    cursor.Restore();  // カーソルを元に戻す
}
			

この例ではCWaitCursorクラスのコンストラクタの第1引数にfalseを指定しているため、 インスタンスを作成した時点ではまだカーソルは変更されません。 Set()を呼び出した時に初めてカーソルが変更されます。

 次に示すのは、独自のカーソルを表示する例です。 なお、あらかじめプロジェクトにIDC_CURSOR1というIDのカーソルリソースを追加しておきます。

// ある関数
void function(){
    CWaitCursor cursor(true, MAKEINTRESOURCE(IDC_CURSOR1), false);

    // ある処理
}
			

この例ではシステムカーソルではなく、独自のカーソルリソースを使用するため、 コンストラクタの第3引数にはfalseを指定します。

 なお、WTLは、独自のカーソルを表示するためにCWaitCursorクラスから派生したCCustomWaitCursorクラスを用意しています。 次に示すのはCCustomWaitCursorクラスを使用する例です。

// ある関数
void function(){
    CCustomWaitCursor cursor(IDC_CURSOR1);

    // ある処理
}
			

CCustomWaitCursorクラスのコンストラクタの第1引数にはカーソルリソースのIDを指定します。 第2、第3引数にはそれぞれ、インスタンスを作成した直後にカーソルを変更するかどうかを示すbool値と、 カーソルリソースが入ったモジュールのインスタンスハンドルを指定できますが、どちらも省略可能です。 省略した場合はデフォルト引数としてそれぞれtrueとNULLが指定されます。