2010-05-04 36 views
6

Come posso forzare a livello di programmazione una finestra mac come finestra frontale? Ho la maniglia della finestra e voglio assicurarmi che la mia finestra sia visualizzata sopra tutte le altre finestre. Posso usare sia Carbon & Cacao per questo.Come forzare la finestra Mac in primo piano?

+0

Stai parlando di una finestra nel tuo programma? O vuoi gestire le finestre di altre app? – Yuji

+2

Raymond Chen ha scritto su questo stesso problema, quando ha posto la domanda importante: "E se due programmi l'avessero fatto?" Una volta che te ne rendi conto, capirai che non può mai _force_ questo, solo _request_ questo. – MSalters

risposta

12

per il cacao, è possibile impostare il livello di finestra utilizzando:

[window setLevel:NSFloatingWindowLevel]; 

Una finestra mobile mostrerà di sopra di tutte le altre finestre regolari, anche se la vostra applicazione non è attiva.

Se si desidera rendere la vostra applicazione attiva, è possibile utilizzare:

[NSApp activateIgnoringOtherApps:YES]; 

e

[window makeKeyAndOrderFront:nil]; 
0

Se è possibile utilizzare (solo 32 bit) kOverlayWindowClass:

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

In caso contrario, creare una NSWindow e impostare il livello della finestra su kCGOverlayWindowLevel.

Si noti che questo sarà anche sopra il cruscotto. Se vuoi essere sotto la dashbord usa kCGUtilityWindowLevel.

Problemi correlati