views:

217

answers:

2

How can I programmatically force a mac window to be the front window? I have the window handle, and want to ensure that my window is displayed above all other windows. I can use both Carbon & Cocoa for this.

+8  A: 

For Cocoa, you can set the window level using:

[window setLevel:NSFloatingWindowLevel];

A floating window will display above all other regular windows, even if your app isn't active.

If you want to make your app active, you can use:

[NSApp activateIgnoringOtherApps:YES];

and

[window makeKeyAndOrderFront:nil];
Ken Aspeslagh
A: 

If you can (32 bit only) use kOverlayWindowClass:

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

Otherwise create an NSWindow and set the window level to kCGOverlayWindowLevel.

Note that this will be above the dashboard as well. If you want to be below the dashbord use kCGUtilityWindowLevel.

drawnonward