Создать NSWindow под C ++ - PullRequest
       1

Создать NSWindow под C ++

3 голосов
/ 30 декабря 2011

Я провел простой эксперимент, я написал следующий код в Xcode:

int main(int argc, char** argv)
{
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    NSApplication* app = [[NSApplication alloc] init];
    NSWindow* window = [[NSWindow alloc] 
        initWithContentRect: NSMakeRect(0, 0, 640, 480)
        styleMask: NSTitledWindowMask | NSMiniaturizableWindowMask
        backing: NSBackingStoreBuffered
        defer: NO];
    [window setTitle: @"New Window"];
    [window center];
    [window makeKeyAndOrderFront:nil];
    [app run];
    [pool release];
    return 0;
}

Он запускается, как и ожидалось, в новом пустом окне, но если я скомпилирую его в терминале с командной строкой:

$ g++ test.mm -framework Cocoa
$ ./a.out

Это будет ветерок при запуске приложения без окна.

Я делаю неправильно?Почему у Xcode и командной строки разное поведение?Может кто-нибудь сказать мне, как я могу добиться того же поведения в командной строке?

Заранее спасибо.

1 Ответ

5 голосов
/ 30 декабря 2011

Взяв ваш код и скомпилировав его, я прекрасно работаю на машине 10.7.2 ... окно появляется (хотя и за окном моего терминала и не отображается как работающее приложение).

Если вы хотите, чтобы ваше приложение отображалось как процесс, запущенный в доке, оно должно быть правильно упаковано в комплект .app. Если вы делаете следующее:

g++ test.mm -framework Cocoa
mkdir -p cli.app/Contents/MacOS
cp a.out cli.app/Contents/MacOS/cli

и затем запустите cli.app/Contents/MacOS/cli из командной строки, ваш процесс будет отображаться как работающее приложение.

...