2010-05-04 117 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,可以在下方使用。