gpt4 book ai didi

cocoa - NSRunAlertPanel 显示在 "active window"后面

转载 作者:行者123 更新时间:2023-12-03 16:39:36 24 4
gpt4 key购买 nike

我正在尝试构建一个简单的错误报告包。如果我的主程序崩溃,它会保存崩溃日志,然后启动报告程序。报告程序询问用户是否可以将崩溃日志发送给我,然后就这样做了。我正在使用 NSRunAlertPanel 创建一个基本消息框。

出于某种原因,该消息框隐藏在任何其他可能打开的窗口下方。从 Finder 窗口运行主包,它显示在顶部,强制它崩溃,报告器窗口显示在 Finder 窗口后面

为什么会出现这种情况,如何解决?

最小测试用例:

#import <AppKit/AppKit.h>

int main(int a, char* av) {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSApplication* q = [[NSApplication alloc] init];
NSRunAlertPanel(@"Hello", @"Aloha", @"OK", nil,nil);
[pool release];
}

构建:

g++ test.mm -framework AppKit && ./a.out

最佳答案

我似乎想出了一个解决方案,从许多与切线相关的网页中提炼出来:

#import <AppKit/AppKit.h>

int main(int a, char* av) {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSApplication* q = [[NSApplication alloc] init];

ProcessSerialNumber psn = {0, kCurrentProcess};
TransformProcessType(&psn, kProcessTransformToForegroundApplication);

[NSApp activateIgnoringOtherApps:YES];

NSRunAlertPanel(@"Hello", @"Aloha", @"OK", nil,nil);
[pool release];
}

我并不假装理解这一点 - 这是最好的 cargo 崇拜编程。如果有更好的答案或对每个步骤的作用的解释,我们将不胜感激。

关于cocoa - NSRunAlertPanel 显示在 "active window"后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2639479/

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