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 回答