Monday, March 7, 2011

Display os x window full screen on secondary monitor using Cocoa

I'm working on a Cocoa Mac app where I need to display a window/view on a secondary monitor, full-screen. I know how to create a window that could be dragged onto the secondary monitor, but I was wanting to programatically create the window and make it full screen on the external monitor. Thanks for the help.

From stackoverflow
  • First, determine which screen you want to use by iterating over [NSScreen screens].

    Create a full screen window with:

    NSScreen *screen = /* from [NSScreen screens] */
    NSRect screenRect = [screen frame];
    NSWindow *window = [[NSWindow alloc] initWithContentRect:screenRect
        styleMask:NSBorderlessWindowMask
        backing:NSBackingStoreBuffered
        defer:NO
        screen:screen];
    [window setLevel: CGShieldingWindowLevel()];
    

    You might want to google CGDisplayCapture() as well.

    Austin : Thank you, that worked great. Since I was trying to output to the secondary screen I just used [window setLevel: NSStatusWindowLevel];
  • You can call the enterFullScreenMode:withOptions: method of NSView to acheieve the desired behaviour.

    See Apple's documentation.

    Read here and here for the options that can be supplied to this method.

    You can use [NSScreen screens] to get the list of available screens. See here for details.

    Austin : Thank you for the help. For what I was trying to do I think the first solution is going to work best for me, but I'll have to keep that View full screen method in mind.

0 comments:

Post a Comment