2
我正在嘗試放置一個簡單的錯誤報告包。如果我的主程序崩潰,它會保存一個crashlog,然後啓動一個記者程序。記者程序詢問用戶是否可以向我發送崩潰日誌,然後這樣做。我使用NSRunAlertPanel來創建一個基本的消息框。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
它將您的應用程序帶到前臺。爲什麼你這樣做主要沒有事件循環,我不知道。 – 2010-04-14 18:42:32
「應用程序」是一個150行程序,用於詢問用戶單個問題,通過curl執行一些簡單的HTTP請求,並可能向用戶發送簡短消息。它並不是真的需要全面的GUI,我也不需要一個 - 我寧願將它保持爲跨平臺,我真正需要的是與Windows MessageBox()的等效。 – ZorbaTHut 2010-04-14 19:30:24
你想要什麼並不重要,框架需要一個事件循環。你與這個公約的鬥爭很可能是完全浪費時間。 – 2010-04-15 05:59:33