Core Graphics >     CGDisplayReconfigurationCallBack
型エイリアス
CGDisplayReconfigurationCallBack
ローカルディスプレイの構成が変更されたときいつでも呼び出されるクライアント提供の呼び出し関数。
宣言
パラメータ
display | 再構成されつつあるディスプレイ。 |
flags | どのディスプレイ構成パラメータが変化しているかを示すフラグ。 |
userInfo | 呼び出し関数が登録されているときに、関数 CGDisplayRegisterReconfigurationCallback(_:_:) に渡された userInfo 引数。 |
議論
関数に MyDisplayReconfigurationCallBack と名前を付けた場合は、以下のように宣言します:
議論
ディスプレイ再構成呼び出し関数を登録するには、CGDisplayRegisterReconfigurationCallback(_:_:) 関数を呼び出します。Quartz は以下の場合に呼び出し関数を呼び出します:
- アプリケーションは、ローカルディスプレイを再構成する関数を呼び出します。
- アプリケーションがイベント処理スレッドのイベントを聞き出し、別のアプリケーションがローカルディスプレイを再構成する関数を呼び出します。
- ユーザーはディスプレイのハードウェア構成を変更します。たとえば、ディスプレイの接続を解除したり、システム環境設定を変更します。
ディスプレイの再構成の前に、Quartz はオンラインディスプレイごとに呼び出し関数を 1 回ずつ呼び出して、保留中の構成変更を示します。flags 引数は常に kCGDisplayBeginConfigurationFlag に設定されています。この呼び出し関数に含まれる唯一のディスプレイ固有の情報は、ディスプレイ ID 番号です。その理由は、再構成が特定のデバイスに与える影響の詳細が、デバイスドライバに利用できないデバイス固有の動作に依存しているためです。
ディスプレイの再構成の後、Quartz は追加、削除、およびオンラインディスプレイごとに呼び出し関数を 1 回ずつ呼び出します。この時点で、Core Graphics と QuickDraw によって報告されるすべてのディスプレイ状態は最新の状態です。flags 引数は、ディスプレイ構成がどのように変更されたかを示します。ディスプレイが削除された場合、削除されたディスプレイ ID を持つ Quartz への呼び出しは失敗します。
以下のコード例は、特定の条件をテストする方法を示しています。
リスト 1
void MyDisplayReconfigurationCallBack ( CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void *userInfo) { if (flags & kCGDisplayAddFlag) { // display has been added } else if (flags & kCGDisplayRemoveFlag) { // display has been removed } }
呼び出し関数は、ディスプレイ構成を変更しようとするのを妨害し、例外を発生させたり、longjmp を呼び出すなどのローカルでない戻りを実行したりしません。呼び出し関数登録の使用が終わったら、それを削除するには CGDisplayRemoveReconfigurationCallback(_:_:) 関数を呼び出す必要があります。