要創建有子類NSWindow疊加窗口,並設置其式面膜和背景色:
@implementation BigTransparentWindow
- (id)initWithContentRect:(NSRect)contentRect
styleMask:(NSUInteger)windowStyle
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)deferCreation
{
self = [super initWithContentRect:contentRect
styleMask:NSBorderlessWindowMask //this makes the window transparent
backing:bufferingType
defer:deferCreation];
if(self)
{
[self setOpaque:NO];
[self setHasShadow:NO];
[self setBackgroundColor:[[NSColor blackColor] colorWithAlphaComponent:0.5]];
}
return self;
}
@end
然後,您需要設置窗口的框架,使其覆蓋所有屏幕,你需要設置它的窗位適當:
- (IBAction)showWindow:(id)sender
{
//set the window so it covers all available screens
NSRect screensRect = NSZeroRect;
for(NSScreen* screen in [NSScreen screens])
{
screensRect = NSUnionRect(screensRect,[screen frame]);
}
[yourWindow setFrame:screensRect display:YES];
if(coverScreen)
{
//set the window so it is above all other windows
[yourWindow setLevel:kCGMaximumWindowLevel];
}
else
{
//set the window so it sits just above the desktop icons
[yourWindow setLevel:kCGDesktopIconWindowLevel + 1];
}
}
正如你所提到的,你可以使用NSApplicationPresentationOptions
設置NSApp
來控制用戶可以與系統進行交互。在不鎖定自己的情況下測試此功能的簡單方法是設置一個NSTimer
,該值調用在超時期限後將應用程序從應用程序服務器模式中拉出的方法。
請只描述你想要做的事情。我們有些人從來沒有使用過這個應用程序,我們大多數人可能不希望查看這裏提到的每個應用程序名稱。 – 2010-02-25 16:34:07