Я пытаюсь собрать простой пакет отчетов об ошибках. Если моя основная программа выйдет из строя, она сэкономит краш-журнал, а затем запустит программу-репортер. Программа репортера спрашивает у пользователя, может ли он отправить мне журнал сбоев, а затем делает это. Я использую 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
Это приложение вашего приложения на передней панели. Почему вы делаете это в основном без цикла событий, я понятия не имею. –
«Приложение» - это 150-строчная программа, которая задает пользователю один вопрос, выполняет несколько простых HTTP-запросов через завиток и, возможно, доставляет короткое сообщение пользователю. На самом деле не нужен полномасштабный графический интерфейс, и я не хочу этого - я бы предпочел сохранить его как можно более кросс-платформенный, все, что мне действительно нужно, эквивалентно Windows MessageBox(). – ZorbaTHut
Неважно, что вы хотите, рамки ожидает цикл событий. Ваша борьба с этим соглашением, скорее всего, будет пустой тратой времени. –