2010-05-04 9 views
6

Wie kann ich programmgesteuert ein Mac-Fenster zum Frontfenster zwingen? Ich habe den Fenstergriff und möchte sicherstellen, dass mein Fenster über allen anderen Fenstern angezeigt wird. Ich kann beide Carbon & Cocoa dafür verwenden.Wie erzwinge ich Mac-Fenster in den Vordergrund?

+0

Sprechen Sie über ein Fenster in Ihrem eigenen Programm? Oder möchtest du mit den Fenstern anderer Apps umgehen? – Yuji

+2

Raymond Chen schrieb über dieses Problem, als er die wichtige Frage stellte: "Was ist, wenn zwei Programme das getan haben?" Sobald Sie das erkannt haben, werden Sie verstehen, dass dies niemals _force_, nur _request_ dies kann. – MSalters

Antwort

12

Für Kakao, können Sie das Fenster Ebene gesetzt werden:

[window setLevel:NSFloatingWindowLevel]; 

Ein schwebendes Fenster wird vor allen anderen regulären Fenster angezeigt werden, auch wenn die App nicht aktiv ist.

Wenn Sie Ihre App aktiv machen möchten, können Sie verwenden:

[NSApp activateIgnoringOtherApps:YES]; 

und

[window makeKeyAndOrderFront:nil]; 
0

Wenn Sie (nur 32 Bit) verwenden kOverlayWindowClass:

WindowRef carbon_window = NULL; 
CreateNewWindow(kOverlayWindowClass , ... , &carbon_window); 
// if you need cocoa: 
NSWindow *cocoa_window = [[NSWindow alloc] initWithWindowRef:carbon_window]; 

Andernfalls erstellen Sie ein NSWindow und legen Sie die Fensterebene auf kCGOverlayWindowLevel fest.

Beachten Sie, dass dies auch über dem Armaturenbrett sein wird. Wenn Sie unter dem Dashbord sein möchten, verwenden Sie kCGUtilityWindowLevel.

Verwandte Themen