RunStandardAlert никогда не возвращается, кнопки не реагируют - PullRequest
0 голосов
/ 28 мая 2010

Я пытаюсь создать простое диалоговое окно из очень простого приложения. Это единственный пользовательский интерфейс в приложении. Но когда я вызываю RunStandardAlert, кнопки не реагируют, и вызов функции никогда не возвращается. Я не использую углерод или какао в другом месте приложения.

Это код, который я использую из учебника Carbon. Я вызываю это напрямую из моей функции main (), но я также попытался вызвать функцию RunApplicationEventLoop () после регистрации таймера цикла событий с помощью InstallEventLoopTimer (), чтобы я мог вызвать оттуда приведенный ниже код на случай, если какая-то магия происходит, когда вы запускаете цикл событий вашего приложения, который выполняет настройку, необходимую для работы диалоговых окон (voodoo!).

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);

1 Ответ

1 голос
/ 28 мая 2010

Вы не можете получить событие, если исполняемый файл не входит в комплект приложения правильно.

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

См. Руководство по программированию Bundle .

...