マウスカーソルの制御
Quartz Display Services には、マウスカーソルを制御する関数が含まれています。たとえば、あなたのアプリケーションがフルスクリーンモードの場合、マウスカーソルを隠したり、カーソルを別の位置に移動したり、マウスの動きをカーソル位置から切り離したりできます。この記事では、これらのサービスを提供する関数について簡単に説明します。これらの関数を使用するには、あなたのアプリケーションはフォアグラウンドでなければなりません。
どのディスプレイでもマウスカーソルを隠したり表示したりするには、CGDisplayHideCursor 関数と CGDisplayShowCursor 関数を使用します。これらの関数は、ディスプレイ ID をパラメータとして取りますが、ディスプレイ ID は使用されません。これらの関数への呼び出しはバランスをとる必要があります。Quartz は、カーソルを表示するためには、隠しカーソルカウントをゼロでなければならないように維持します。
Quartz は、アプリケーションがフォアグラウンドにある間にマウスの動きをカーソルの位置から切り離す為に便利な関数を提供します。 関数 CGAssociateMouseAndMouseCursorPosition に false を渡すことで、マウスの移動によるカーソル位置の変更を防ぐことができます。効果を元に戻すには true を渡します。
CGDisplayMoveCursorToPoint 関数を呼び出すことによって、特定のディスプレイ上でマウスカーソルの位置を変更することができます。この関数は、ディスプレイ ID とポイントの 2 つのパラメータをとります。ポイントの位置は、ディスプレイの原点または左上隅への相対です。また、CGWarpMouseCursorPosition 関数を呼び出すことによって、マウスカーソルの位置を任意のディスプレイに変更することもできます。この関数は、単一のパラメータ、グローバルディスプレイ座標のポイントをとります。これらの関数のいずれかを呼び出すと、マウスイベントは生成されません。
リスト 1 は、カーソルを隠し、マウスの動きをカーソルから切り離し、それをメインディスプレイの原点に移動し、完了したらカーソルとマウスを復元する方法を示しています。
リスト 1 マウスカーソルの制御
CGDisplayHideCursor (kCGNullDirectDisplay); CGAssociateMouseAndMouseCursorPosition (false); CGDisplayMoveCursorToPoint (kCGDirectMainDisplay, CGPointZero); /* perform your application’s main loop */ CGAssociateMouseAndMouseCursorPosition (true); CGDisplayShowCursor (kCGNullDirectDisplay);
前の章 次の章