Ich habe den folgenden Code, der meist funktioniert abgesehen von ich kann nie die myWindow
, die ich erstellen. Wenn ich [myWindow isVisible]
mache, gibt es 1
zurück. Die CGDisplayCapture
funktioniert gut, da es den Bildschirm ausblendet. Ich habe alle Variablen überprüft, die ich an die NSWindow-Init-Methode übergebe.Cocoa Vollbild-Fenster auf dem sekundären Display
Fehle ich etwas wirklich offensichtlich? Hier ist der Code:
// 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];
Prost
Wenn ich einfach '[[NSWindow alloc ] init]; 'Dann erscheint ein kleines blaues Fenster. Vielleicht ist es etwas in dieser Methode, aber 'screenRect' und' screen' sind in Ordnung, da ich sie mit 'NSLog' überprüft habe. – jdelaune
Es ist lange her, dass ich ein Fenster im Vollbildmodus machen musste, so wie du es machst. Gibt es einen Grund, warum Sie nicht -enterFullScreenMode: withOptions: an eine Ansicht senden, die alles enthält, was Sie zeichnen möchten? – NSResponder
Denken Sie nicht so, aber sicherlich müssen Sie ein Fenster trotzdem erstellen, um eine Ansicht zu enthalten, können Sie eine Vollbildansicht ohne ein Fenster sicher nicht machen? Ich habe '[NSScreen mainScreen]' in den Bildschirmparameter übergeben und das hat funktioniert, also muss ich herausfinden, warum es nicht den 'NSScreen' mag, den ich es sendend, wie mainScreen verwendend, ist nicht so zuverlässig, wenn ich die Sekundäranzeige will . Wenn das nicht funktioniert, werde ich die Ansichtslösung ausprobieren. Danke für deine Hilfe. – jdelaune