最近正好要写一个全屏的cocoa程序,所以就研究了一些用cocoa怎么写全屏的程序。 说起来全屏程序很简单,就是首先要拿到你要全屏的显示设备的ID,然后获取这个设备。接着建立一个无边界的窗口,将其大小设置为屏幕的大小,然后显示就可以了,这个窗口里面可以显示你需要的任何东东,包括按钮,滚动条等等,不过一般全屏要么显示图片,要么显示视频,再就是3D程序,所以也不会放上很丑的这些按钮什么的。 首先是获得显示设备的ID,你可以使用 CGDisplayErr CGGetActiveDisplayList ( CGDisplayCount maxDisplays, CGDirectDisplayID *activeDspys, CGDisplayCount *dspyCnt ); 去获得所有的可用的显示设备,然后用设备ID调用函数 CGDisplayErr CGDisplayCapture ( CGDirectDisplayID display ); 去获得这个设备。接着,我们建立一个无边界的窗口: – (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation screen:(NSScreen *)screen 其中参数windowStyle设置为NSBorderlessWindowMask就是无边界窗口,screen要设置成为屏幕大小。我的程序里面完整的调用如下: [[YLFullScreenWindow alloc] initWithContentRect:screenRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO screen:[NSScreen mainScreen]]; 然后显示这个窗口就可以了。 我的程序中之所以使用YLFullScreenWindow,是因为要想全屏窗口响应鼠标事件,必须自己重载NSWindow这个类,重写一下函数- (BOOL)canBecomeKeyWindow,使其总是返回YES: – (BOOL)canBecomeKeyWindow { return YES; } 好了,全屏程序就这样建立了。
-
Pages
-
Tags
-
Recent Posts
-
Recent Comments