查看: 3297|回复: 7

[原创发布] 《游戏窗口居中怎么写》之答

[复制链接]
梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
回帖
705

R考场第七期纪念奖

发表于 2015-8-3 00:55:26 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
[pre lang="ruby"]module Extra
  module_function
  #---------------------游戏窗口居中-------------------------------#
  Desktop_hwnd=Win32API.new("user32","GetDesktopWindow",'v','l').call
  Win_hwnd=Win32API.new("user32","GetActiveWindow",'v','L').call
  def Put_to_center()
    size=' '*16
    Win32API.new("user32","GetWindowRect",'lp','v').call(Desktop_hwnd,size)
    size=size.unpack('l*')
    size_x=size[2]*3/5
    size_y=size[3]*4/5
    size_l=size[2]*1/5
    size_u=size[3]*1/11
    Win32API.new("user32","MoveWindow",%(llllll),'l').call(Win_hwnd,size_l,size_u,size_x,size_y,1)
  end
end[/pre]

随便插进去
调用是 Extra.Put_to_center
自己看脚本即可 不解释

@jiahui5592986  
梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
回帖
317
发表于 2015-8-5 09:46:43 | 显示全部楼层
如果是打开GAME.exe就让他居中呢[我知道默认就是居中的]
回复

使用道具 举报

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
回帖
705

R考场第七期纪念奖

 楼主| 发表于 2015-8-5 11:16:40 | 显示全部楼层
jiahui5592986 发表于 2015-8-5 09:46
如果是打开GAME.exe就让他居中呢[我知道默认就是居中的]

我没懂你的意思 插在脚本里 不就是打开运行的吗
以及上面我的代码是有问题的 因为也改了分辨率 以及当时没考虑任务栏的长度 所以其实不应该这样写...
回复

使用道具 举报

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
回帖
317
发表于 2015-8-5 12:02:36 | 显示全部楼层
SixRC 发表于 2015-8-5 11:16
我没懂你的意思 插在脚本里 不就是打开运行的吗
以及上面我的代码是有问题的 因为也改了分辨率 以及当时 ...

如图,我是这样写的窗口位置.但是这样直接赋予X.Y值的话..在不同分辨率下面会不协调.您是什么解决哒?
2.png
回复

使用道具 举报

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
回帖
705

R考场第七期纪念奖

 楼主| 发表于 2015-8-5 12:09:39 | 显示全部楼层
jiahui5592986 发表于 2015-8-5 12:02
如图,我是这样写的窗口位置.但是这样直接赋予X.Y值的话..在不同分辨率下面会不协调.您是什么解决哒?

...

获取桌面尺寸 然后计算一下
  1. SystemParametersinfo=Win32API.new("user32","SystemParametersInfo",'llpl','l')
  2.   size=' '*16
  3.   SystemParametersinfo.call(48,0,size,0)
  4.   size=size.unpack('l4')
复制代码
这样获取的尺寸是不含任务栏的
size[0]和size[1]是0
size[2]是x
size[3]是y
然后计算一下 留空多少就可以了
回复

使用道具 举报

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
回帖
317
发表于 2015-8-5 12:18:00 | 显示全部楼层
SixRC 发表于 2015-8-5 12:09
获取桌面尺寸 然后计算一下这样获取的尺寸是不含任务栏的
size[0]和size[1]是0
size[2]是x

so。我贴的那个图中,脚本要怎么写捏
回复

使用道具 举报

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
回帖
705

R考场第七期纪念奖

 楼主| 发表于 2015-8-5 12:40:20 | 显示全部楼层
jiahui5592986 发表于 2015-8-5 12:18
so。我贴的那个图中,脚本要怎么写捏

知道了桌面尺寸之后 (size[2]-646)/2 作为位置x   (size[3]-512)/2作为位置y就好了
你的代码里640要改成646 因为左右还各有3像素的蓝边
480要改成512  因为上有29像素的标题栏 下面有3像素
回复

使用道具 举报

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
回帖
317
发表于 2015-8-5 18:12:09 | 显示全部楼层
SixRC 发表于 2015-8-5 12:40
知道了桌面尺寸之后 (size[2]-646)/2 作为位置x   (size[3]-512)/2作为位置y就好了
你的代码里640要改成6 ...

解决了,谢谢啦{:2_275:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部