1

Mac OS X の Quartz でディスプレイ再構成イベントを取得するために使用しようとしていますCGDisplayRegisterReconfigurationCallback。非常に単純なコードは次のとおりです。

void CB(CGDirectDisplayID display,
        CGDisplayChangeSummaryFlags flags,
        void *userInfo) {
    std::cout << "In callback!" << std::endl;
}

int main (int argc, char * const argv[]) {
    std::cout << CGDisplayRegisterReconfigurationCallback(CB, NULL) << std::endl;
    std::cout << "Registered callback, sleeping..." << std::endl;
    sleep(10000000);
    return 0;
}

ただし、モニターを接続/取り外したときにコールバックが呼び出されないなど、 CGDisplayRegisterReconfigurationCallback成功が返されます。

「os x 開発の初心者」は、ここでの私の背景知識の誇張です。コールバックを機能させるには、クオーツ イベント ループのようなものをインスタンス化する必要がありますか?

4

1 に答える 1

0

ある種の実行ループが必要です。標準の Cocoa または Carbon アプリには、通常のイベント処理の一部としてこれがあります。最も必要最小限の方法は、CFRunLoopRun を使用することだと思います。

于 2010-07-04T07:06:20.133 に答える