module Graphics #取得窗口句柄 HWND = Win32API.new('user32','GetActiveWindow',nil,'l').call def self.fullscreen? #取得窗口范围矩形 window_rect = "\0" * 16 Win32API.new('user32','GetWindowRect',['l','p'],'i').call(HWND,window_rect) wl,wt,wr,wb = window_rect.unpack('llll') #取得客户区矩形 client_rect = "\0" * 16 Win32API.new('user32','GetClientRect',['l','p'],'i').call(HWND,client_rect) cl,ct,cr,cb = client_rect.unpack('llll') wr - wl == cr end end
使用时:
Graphics.fullscreen? #当游戏处于全屏状态时返回true, 否则返回false
原理:使用GetWindowRect 和GetClientRect 分别取得游戏窗口的整个范围矩形和客户区矩形。游戏全屏后,由于不再存在边框,这两个矩形就是相等的。而在窗口模式下,客户区矩形会小一些。