如何强制Mac窗口前景?

时间:2010-05-04 08:29:30

标签: c++ cocoa macos graphics macos-carbon

如何以编程方式强制将mac窗口作为前窗?我有窗口句柄,并希望确保我的窗口显示在所有其他窗口上方。我可以同时使用Carbon&可可为此。

2 个答案:

答案 0 :(得分:12)

对于Cocoa,您可以使用以下方式设置窗口级别:

[window setLevel:NSFloatingWindowLevel];

即使您的应用未处于活动状态,浮动窗口也会显示在所有其他常规窗口上方。

如果您想激活应用,可以使用:

[NSApp activateIgnoringOtherApps:YES];

[window makeKeyAndOrderFront:nil];

答案 1 :(得分: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

请注意,这也将位于仪表板上方。如果你想要低于dashbord使用kCGUtilityWindowLevel。