Project1

标题: 判断游戏是否处于全屏 [打印本页]

作者: 失落的乐章    时间: 2015-3-20 21:18
标题: 判断游戏是否处于全屏
本帖最后由 失落的乐章 于 2015-3-27 20:35 编辑

代码:
  1. module Graphics
  2.   #取得窗口句柄
  3.   HWND = Win32API.new('user32','GetActiveWindow',nil,'l').call
  4.   def self.fullscreen?
  5.     #取得窗口范围矩形
  6.     window_rect = "\0" * 16
  7.     Win32API.new('user32','GetWindowRect',['l','p'],'i').call(HWND,window_rect)
  8.     wl,wt,wr,wb = window_rect.unpack('llll')
  9.     #取得客户区矩形
  10.     client_rect = "\0" * 16
  11.     Win32API.new('user32','GetClientRect',['l','p'],'i').call(HWND,client_rect)
  12.     cl,ct,cr,cb = client_rect.unpack('llll')
  13.     wr - wl == cr
  14.   end
  15. end
复制代码
使用方法:
  1. Graphics.fullscreen?    #当游戏处于全屏状态时返回true, 否则返回false
复制代码
原理:

使用GetWindowRect 和GetClientRect 分别取得游戏窗口的整个范围矩形和客户区矩形。游戏全屏后,由于不再存在边框,这两个矩形就是相等的。而在窗口模式下,客户区矩形会小一些。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1