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

标签 cocoa fullscreen nswindow

我有以下代码,除了我永远看不到我创建的 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];

干杯

最佳答案

如果您需要 10.5 或更高版本,使用 NSView 的 -enterFullScreenMode:withOptions:和匹配的 -exitFullScreenModeWithOptions:。这正确地将责任转移到容器 View (它仍然可以有自己的复杂 subview 集),并使您摆脱手动弄乱窗口级别等的一些陷阱。

关于辅助显示屏上的 cocoa 全屏窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4583928/

相关文章:

objective-c - 如何将所有错误(包括未捕获的异常、NSLog 调用和其他日志)重定向到 Mac OS X 上的日志文件?

objective-c - 调整 NSView 的大小使其小于其 subview ?

c# - 全屏 c# windows 窗体覆盖所有显示器

javascript - 如何在 Safari 中更改全屏背景颜色

javascript - 使用箭头键浏览网站

macos - Cocoa 在特定屏幕上显示 NSWindow

objective-c - 状态应用程序 : sometimes panels are missing, 多线程可能存在问题

objective-c - NSTableView:显示扩展行(动态调整大小)

objective-c - 最小化/小型化 cocoa NSWindow 没有标题栏

objective-c - 如何使用非矩形按钮创建透明窗口?