辅助显示屏上的Cocoa全屏窗口

时间:2011-01-03 11:07:42

标签: cocoa fullscreen nswindow

我有以下代码,除了我永远看不到我创建的myWindow之外。如果我[myWindow isVisible],则返回1CGDisplayCapture工作正常,因为它消隐了屏幕。我已经检查了所有传递给NSWindow init方法的变量。

我错过了一些非常明显的东西吗?这是代码:

// Find the screen we want
NSScreen *screen                = [[NSScreen screens] objectAtIndex:1];
NSNumber *displayID             = [[screen deviceDescription] 
                                  objectForKey:@"NSScreenNumber"];
CGDirectDisplayID CGDisplayID   = (CGDirectDisplayID) [displayID intValue];

// Capture the secondary display
if (CGDisplayCapture( CGDisplayID ) != kCGErrorSuccess) {
  NSLog( @"Couldn't capture the secondary display" );
}

// Draw a new window to fill the screen
NSRect screenRect = [screen frame];
NSWindow *myWindow = [[NSWindow alloc] initWithContentRect:screenRect
                                               styleMask:NSBorderlessWindowMask
                                                 backing:NSBackingStoreBuffered
                                                   defer:NO
                                                  screen:screen];

// Set the level of the new window and other settings
NSInteger windowLevel = CGShieldingWindowLevel();
[myWindow setLevel: windowLevel];
[myWindow setBackgroundColor:[NSColor blueColor]];
[myWindow makeKeyAndOrderFront:nil];

干杯

2 个答案:

答案 0 :(得分:3)

如果您需要10.5或更高版本,使用NSView的-enterFullScreenMode:withOptions:和匹配的-exitFullScreenModeWithOptions:。这会将责任正确地转移到容器视图(它仍然可以拥有自己复杂的子视图集),并使您免于手动弄乱窗口级别等问题。

答案 1 :(得分:1)

如果你没有全屏显示,那么这个窗口是什么样的?

我没有看到您将任何视图添加到您正在创建的窗口中。如果您的窗口内容视图是NSView实例,则它不会进行任何绘制。