gpt4 book ai didi

objective-c - 在 Objective-C 中以编程方式创建 Mojave Cocoa 窗口

转载 作者:行者123 更新时间:2023-12-03 17:46:42 26 4
gpt4 key购买 nike

我正在尝试创建一个最小的应用程序,以便我从头开始启动游戏引擎。这是代码:

#import <Cocoa/Cocoa.h>

int main (int argc, const char * argv[]){
NSWindow *window = [[NSWindow alloc] init];
[window makeKeyAndOrderFront:nil];
CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, false)
while (1);
return 0;
}

我想如何在不调用 CFRunLoopRunInMode() 的情况下显示窗口。

Xcode 10.1

MacOS 10.14.3

最佳答案

我想我自己已经找到了答案。除非收到 nextEventMatchingMask: 消息,否则该窗口不会出现。这可能是触发 CFRunLoop 中窗口的原因,也是我想知道的,尽管如果我能更深入地研究那就太好了。目前,我对以下解决方案感到满意。

#import <Cocoa/Cocoa.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
// Create a default window
NSWindow *window = [[NSWindow alloc] init];
// Make it blue just for better visibility
[window setBackgroundColor:[NSColor blueColor]];
// Bring to front and make it key
[window makeKeyAndOrderFront:nil];
// Custom run loop
NSEvent* event;
while(1) {
do {
event = [window nextEventMatchingMask:NSEventMaskAny]; //window shows now
if ([event type] == NSEventTypeLeftMouseDown) {
NSLog(@"Mouse down");
}
else {
NSLog(@"Something happened");
}
} while (event != nil);
}
}
return 0;
}

我没有这方面的引用。我只能引用这篇文章:Handmade Hero for mac其中窗口出现是由于类似的方法。这对我来说还不够好,因为这样的方法涉及 NSApp,如果可能的话,我想避免它。

关于objective-c - 在 Objective-C 中以编程方式创建 Mojave Cocoa 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54750924/

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