2010-05-04 114 views
6

如何以編程方式強制mac窗口成爲前窗?我有窗口句柄,並希望確保我的窗口顯示在所有其他窗口之上。我可以使用這兩種碳&可可。如何強制Mac窗口前景?

+0

你說的是在自己的程序的窗口?或者你想處理其他應用程序的窗口? – Yuji 2010-05-04 14:33:08

+2

Raymond Chen在提到這個重要問題時寫到了這個問題:「如果兩個程序都這樣做了?」一旦你意識到這一點,你就會明白,永遠不可能強制這個,只有_request_這個。 – MSalters 2010-05-06 08:52:47

回答

12

可可,你可以使用設置窗口級別:

[window setLevel:NSFloatingWindowLevel]; 

浮動窗口中會顯示在所有其他常規的Windows,即使你的應用程序是不活躍。

如果你想使你的應用程序激活,您可以使用:

[NSApp activateIgnoringOtherApps:YES]; 

[window makeKeyAndOrderFront:nil]; 
0

如果你能(僅限32位)使用kOverlayWindowClass:

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

否則,創建NSWindow並將窗口級別設置爲kCGOverlayWindowLevel

請注意,這也將位於儀表板上方。如果你想要使用kCGUtilityWindowLevel,可以在下方使用。