我有以下代码,除了我永远看不到我创建的myWindow
之外。如果我[myWindow isVisible]
,则返回1
。 CGDisplayCapture
工作正常,因为它消隐了屏幕。我已经检查了所有传递给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];
干杯
答案 0 :(得分:3)
如果您需要10.5或更高版本,请使用NSView的-enterFullScreenMode:withOptions:和匹配的-exitFullScreenModeWithOptions:。这会将责任正确地转移到容器视图(它仍然可以拥有自己复杂的子视图集),并使您免于手动弄乱窗口级别等问题。
答案 1 :(得分:1)
如果你没有全屏显示,那么这个窗口是什么样的?
我没有看到您将任何视图添加到您正在创建的窗口中。如果您的窗口内容视图是NSView实例,则它不会进行任何绘制。