设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

更改窗体分辨率真实版

2007-8-17 10:51| 发布者: 叶舞枫| 查看: 4170| 评论: 0|原作者: 美兽

摘要:    作者 美兽 版本 没有 相关网址 点此进入讨论贴 范例工程 没有   内容 针对提问区的两个问题而写,http://bbs.66rpg.com/forumTopicRead.asp?id=61618http://bbs.66rpg.com/forumTopicRead

  

作者

美兽

版本

没有

相关网址

点此进入讨论贴

范例工程

没有


 

内容

针对提问区的两个问题而写,
http://bbs.66rpg.com/forumTopicRead.asp?id=61618
http://bbs.66rpg.com/forumTopicRead.asp?id=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://bbs.66rpg.com/web/htm/news547.htm

  
 

教程的通用说明

本站发布的教程,大多经过一些测试,应该都能够实现相应功能。但不保证所有的教程都是最优化的制作方法。

相关问题,点击发布贴进行讨论。谢谢您的鼓励与支持。

1

鲜花

刚表态过的朋友 (1 人)

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-3 20:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部