簡體   English   中英

初始化窗口代碼Mac OS X

[英]Initialize window code Mac OS X

我目前正在閱讀“紅皮書”以正確學習OpenGL,在第一個示例中,作者寫了一行“ InitializeAWindowPlease();”。 作為代碼的占位符,該代碼將使窗口成為繪制OpenGL內容的窗口。

由於我使用Xcode進行編程,因此我知道自己“獲取”了一個自動使用的窗口(並且我必須在interfacebuilder中創建自己的OpenGL視圖)。

我怎樣才能用純代碼做到這一點?

我正在嘗試學習編程,並且我對一直選擇“快捷方式”不滿意。 如何創建一個窗口來繪制我的openGL內容?

使用Objective-C和C代碼,我很樂意看到它。 我的目標是完全不用打開界面生成器就可以做到:)

框架實際上為您做了很多工作。 main.m中對NSApplicationMain()的簡單調用可以執行諸如啟動主應用程序類(由Info.plist確定),加載主nib ,加載主窗口和菜單,設置默認內存自動釋放池之類的操作,然后進入運行循環(以及更多!)。

了解幕后到底發生了什么“魔術”是一件好事,但是讓框架為您完成很多繁瑣的工作,我認為沒有什么錯。 IB是一個特別好的UI編輯器,不使用它會很可惜! 無論如何,既然你問...

您應該從Apple的Developer Connection網站上閱讀以下文檔:

因此,至少要以編程方式完成所有這些操作,您將需要執行以下代碼。 請注意,這只是一個粗略的開始,不會創建應用程序委托,也不會在菜單中添加任何內容。 這留給讀者練習! 但是下面的代碼基本上可以按照您描述的方式工作,而無需使用IB。

//  main.m
//
//  NoIBApp - Create Application without IB
//
//  Created by Gavin Baker on 23/01/10.
//

#import <Cocoa/Cocoa.h>

int main(int argc, char *argv[])
{
    // Autorelease Pool

    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];

    // Create shared app instance

    [NSApplication sharedApplication];

    // Main window

    NSUInteger windowStyle = NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask;

    NSRect windowRect = NSMakeRect(100, 100, 400, 400);

    NSWindow* window = [[NSWindow alloc] initWithContentRect:windowRect
                                                   styleMask:windowStyle
                                                     backing:NSBackingStoreBuffered
                                                       defer:NO];

    // Test content

    NSTextView* textView = [[NSTextView alloc] initWithFrame:windowRect];
    [window setContentView:textView];

    // Window controller

    NSWindowController* windowController = [[NSWindowController alloc] initWithWindow:window];

    // @todo Create app delegate

    // @todo Create menus (especially Quit!)

    // Show window and run event loop

    [window orderFrontRegardless];
    [NSApp run];

    return 0;
}

這不是一個完整的解決方案,但是應該可以幫助您達到目標。 因此,您可以將OpenGL視圖作為contentView (而不是文本視圖)插入其中,然后離開。

據我了解,通常可可粉的使用方式有所不同。 [NeHe's OpenGL lessons]在底部具有指向示例Xcode項目的鏈接,您可以遵循其格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM