gpt4 book ai didi

c++ - glfw应用中如何实现NSApplicationDelegate协议(protocol)

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:10 25 4
gpt4 key购买 nike

我目前正在 MacOS X 中使用 glfw 编写一个应用程序。我唯一的问题是该应用程序不使用 AppDelegate,而是像命令行实用程序一样在 main.cpp 文件中进行所有初始化。我特别想实现的功能

- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename;

并且我已经在 plist 文件中注册了文件扩展名,当我尝试打开它们时,我收到一条错误消息“无法打开文档“Doc.xxx”。MyApp 无法打开“xxx”格式。

我试图创建一个将自己设置为委托(delegate)的单例,但它只是不调用该函数。任何人都可以评论创建类和实现 NSApplicationDelegate 函数的可能性吗?

最佳答案

基本上,您的代码中没有任何内容可以从操作系统接收事件并提取接收到的事件。

根据另一个堆栈溢出 Q/A,解决方案似乎是手动调用 NSApplication。您仍然需要决定将 OpenGL 渲染循环挂接到何处,因为 [NSApp run] 在应用程序完成之前不会返回。另一种解决方案可能是进行自定义 NSApplication 替换。 http://www.cocoawithlove.com/2009/01/demystifying-nsapplication-by.html

考虑到 ARC 的修改,从这个答案中逐字复制:https://stackoverflow.com/a/2154666/1874323

@autoreleasepool { 
AppDelegate * delegate = [[AppDelegate alloc] init];

NSApplication * application = [NSApplication sharedApplication];
[application setDelegate:delegate];
[NSApp run]; // Note this never returns until the app finishes, so you need to decide where to hook your code into
}

与往常一样,您可以从 Apple 网站找到文档: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSApplication_Class/Reference/Reference.html

关于c++ - glfw应用中如何实现NSApplicationDelegate协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25488173/

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