2011-12-30 2 views
3

C++ я сделал простой эксперимент, я написал следующий код в Xcode:Создать NSWindow под

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; 
} 

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

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

Будет работать на [app run] без окна.

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

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

ответ

5

Принимая ваш код и компилируя его, я отлично работаю на машине 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 из командной строки, ваш процесс будет отображаться как запущенное приложение.

+0

Прохладный, он работает, спасибо, я прочитаю больше о пакете в библиотеке разработчиков Apple. –

+0

Прохладный, спасибо! Но по какой-то причине мое окно не может быть выбрано (с помощью мыши) - оно всегда остается серым. Есть идеи по этому поводу? – peetonn

Смежные вопросы