0

非常に単純なアプリケーション内から単純なダイアログ ボックスを作成しようとしています。これは、アプリケーションで唯一の UI です。しかし、RunStandardAlert を呼び出すと、ボタンが応答しなくなり、関数呼び出しが返されません。アプリの他の場所で Carbon または Cocoa を使用していません。

これは、Carbon チュートリアルからの、私が使用しているコードです。これを main() 関数から直接呼び出していますが、InstallEventLoopTimer() でイベント ループ タイマーを登録した後、RunApplicationEventLoop() の呼び出しも試みました。ダイアログ ボックスが機能するために必要なセットアップを行うアプリケーション イベント ループを実行します (ブードゥー!)。

DialogRef theItem;
DialogItemIndex itemIndex;
CreateStandardAlert(kAlertStopAlert, CFSTR("Oh dear, the penguin’s disappeared."),
CFSTR("I hope you weren’t planning to open source him."), NULL, &theItem);
RunStandardAlert (theItem, NULL, &itemIndex);
4

1 に答える 1

1

実行可能ファイルがアプリ バンドルに正しく含まれていない場合、イベントを受信できません。

foo.c

#include <Carbon/Carbon.h>

int main(){
    DialogRef theItem;
    DialogItemIndex itemIndex;
    CreateStandardAlert(kAlertStopAlert, CFSTR("Oh dear, the penguin’s disappeared."),
    CFSTR("I hope you weren’t planning to open source him."), NULL, &theItem);
    RunStandardAlert (theItem, NULL, &itemIndex);
    return 0;
}

次に、それをコンパイルします

$ gcc foo.c -o foo -framework Carbon

次に、ディレクトリを作成する必要があります

foo.app
foo.app/Contents
foo.app/Contents/MacOS

次に、バイナリfooを入れます

foo.app/Contents/MacOS/foo

これで、次のいずれかを呼び出すことができます

$ open foo.app

また

$ foo.app/Contents/MacOS/foo

バンドル プログラミング ガイドを参照してください。

于 2010-05-28T16:04:58.733 に答える