繁体   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