赞 | 0 |
VIP | 17 |
好人卡 | 0 |
积分 | 1 |
经验 | 1022914 |
最后登录 | 2017-2-4 |
在线时间 | 10 小时 |
Lv1.梦旅人 月下可怜人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 10 小时
- 注册时间
- 2005-11-23
- 帖子
- 4085
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
针对提问区的两个问题而写,
http://rpg.blue/viewthread.php?tid=61618
http://rpg.blue/viewthread.php?tid=63926
费了差不多一小时,主要最开始陷入误区,在MSDN找了许久
SetClientRect函数,却没找到,只好绕圈换个角度修改。
解决两个问题,
一:更改客户区大小,即显示画面真实的分辨率,而不是窗体。
二:自动居中。
if $myfirst == nil
$myfirst = 'myGod'
宽度=800
高度=600
游戏ini名=".\\Game.ini"
val = "\0"*256
gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
gps.call("Game", "Title", "", val, 256, 游戏ini名)
val.delete!("\0")
title = val
fw = Win32API.new('user32', 'FindWindow', 'pp', 'i')
hWnd = fw.call("RGSS Player", title)
swp = Win32API.new('user32', 'SetWindowPos', 'lliiiii', 'i')
pointwds = [0,0,0,0].pack('llll')
pointcet = [0, 0].pack('ll')
wdsrect = Win32API.new('user32.dll', 'GetWindowRect', 'lp', 'l')
client_screen = Win32API.new("user32", "ClientToScreen", 'ip', 'i')
wdsrect.call(hWnd,pointwds)
client_screen.call(hWnd, pointcet)
wds = pointwds.unpack('llll')
cet = pointcet.unpack('ll')
addw = wds[2] - wds[0] - 640
addh = wds[3] - wds[1] - 480
x = wds[0] - (宽度 - 640) / 2
y = wds[1] - (高度 - 480) / 2
swp.call(hWnd, 0, x, y, 宽度 + addw, 高度 + addh, 0x20)
end
此为原版,对照测试下,即可明白区别。
http://rpg.blue/web/htm/news547.htm
|
|