gpt4 book ai didi

c++ - RunStandardAlert 永远不会返回,按钮无响应

转载 作者:行者123 更新时间:2023-11-28 08:29:08 25 4
gpt4 key购买 nike

我正在尝试从一个非常简单的应用程序中创建一个简单的对话框。它是应用程序中唯一的 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);

最佳答案

如果可执行文件未正确包含在应用程序包中,您将无法收到事件。

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 Programming Guide .

关于c++ - RunStandardAlert 永远不会返回,按钮无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2925017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com