幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3398|回复: 10

[RMVX] [求助]请问在游戏运行中如何更改标题栏。

[复制链接]

79

主题

617

帖子

6150

积分

⑦老手

暗夜下可怜人

积分
6150
发表于 2006-7-19 10:43:08 | 显示全部楼层 |阅读模式
默认进入游戏时,标题栏显示的是Game里设置的Title,如何在游戏运行过程中,更改其文字呢?

例如根据游戏进程在标题栏显示时间和日期等等。

运行游戏时虽然能改Title文字,当只有重新启动工程标题栏才会变化。
[s:6]
希望破灭是因为发现真实,宁可背负罪孽也要维护爱我之人,永远的娜乌西卡!!!!!!
回复

使用道具 举报

2

主题

134

帖子

1016

积分

⑥精研

积分
1016
发表于 2006-7-19 11:03:56 | 显示全部楼层
大概要用Win32API
http://msdn.microsoft.com/librar ... s/setwindowtext.asp

其中hWnd可能要用下边的方法获得
http://msdn.microsoft.com/librar ... ns/findwindowex.asp
用Spy++这类的工具查到游戏窗口的ClassName和WindowName,当作参数调用
回复 支持 反对

使用道具 举报

79

主题

617

帖子

6150

积分

⑦老手

暗夜下可怜人

积分
6150
 楼主| 发表于 2006-7-19 11:06:17 | 显示全部楼层
引用第1楼さくら2006-07-19 11:03发表的“”:
大概要用Win32API
http://msdn.microsoft.com/librar ... s/setwindowtext.asp

其中hWnd可能要用下边的方法获得
http://msdn.microsoft.com/librar ... ns/findwindowex.asp
.......


[s:3]  [s:3]  [s:3],API偶一窍不通……
希望破灭是因为发现真实,宁可背负罪孽也要维护爱我之人,永远的娜乌西卡!!!!!!
回复 支持 反对

使用道具 举报

79

主题

617

帖子

6150

积分

⑦老手

暗夜下可怜人

积分
6150
 楼主| 发表于 2006-7-19 11:07:47 | 显示全部楼层
能讲下大概用法吗?
希望破灭是因为发现真实,宁可背负罪孽也要维护爱我之人,永远的娜乌西卡!!!!!!
回复 支持 反对

使用道具 举报

2

主题

134

帖子

1016

积分

⑥精研

积分
1016
发表于 2006-7-19 11:16:55 | 显示全部楼层
对不起,我现在手头没有环境来试验 >_<
等我回家试好了再说好么
回复 支持 反对

使用道具 举报

50

主题

994

帖子

6699

积分

管理员

爱干啥干啥!

Rank: 9Rank: 9Rank: 9

积分
6699
发表于 2006-7-19 13:58:28 | 显示全部楼层
我用的さくら 提供的这个API,写了如下代码:
  1. CP_ACP = 0
  2. CP_UTF8 = 65001
  3. # 获取当前窗口句柄
  4. $FindWindowEX = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
  5. # 字符编码转换API
  6. $m2w = Win32API.new('kernel32', 'MultiByteToWideChar', '%w(i,l,p,i,p,i)', 'i')
  7. $w2m = Win32API.new('kernel32', 'WideCharToMultiByte', '%w(i,l,p,i,p,i,p,p)', 'i')
  8. # 改变窗口文字的API
  9. $SetWindowText = Win32API.new('user32','SetWindowText','%w(l,p)','L')
  10. # 首先获得窗口名称的正确编码
  11. game_title="游戏工程名称"
  12. buffer = "\\0\\0" * game_title.size
  13. project_name = "\\0" * game_title.size
  14. $m2w.call(CP_UTF8, 0, game_title, -1, buffer, game_title.size)
  15. $w2m.call(CP_ACP,0,buffer,-1,project_name,game_title.size,0,0)
  16. # 获取窗口句柄
  17. $hWnd = $FindWindowEX.call(0,0,nil,project_name)
  18. # 改变窗口名称
  19. $new_name="新名字"
  20. module Graphics
  21.   def self.update_new
  22.     Graphics.update
  23.     $SetWindowText.call($hWnd,$new_name)
  24.   end
  25. end
复制代码

貌似alias无法重命名模块方法,比如Graphics.update无法被重命名,所以只好新写了个方法。然后手工替代Graphics.update方法。
但是仍然发现,其实每一帧Graphics.update都会自动更改游戏标题栏的,所以无法实现这个效果,这段代码只能实现原标题和新标题互相闪烁着更新……

另外,不知道楼主为何要此功能?譬如游戏全屏的时候,是无法看到标题栏的呀~~

“放下屠刀,立地成佛” 故应先杀生,然后再成佛。

(\\_/) (-_-) ()+() this is bunny priest.
回复 支持 反对

使用道具 举报

91

主题

3188

帖子

83986万

积分

荣誉群

传说中的Bunny大神~!

积分
839861514
QQ
发表于 2006-7-19 16:34:44 | 显示全部楼层
高手的交流- -|||,我飘。。。[s:5]  [s:5]  [s:5]
其他所有的Bunny神都素我的部下XD~ 小教程范例收集 Orz感谢邪恶萝卜联盟!!!(原因自己去猜)
回复 支持 反对

使用道具 举报

218

主题

1万

帖子

10万

积分

⑧专业

赋予你第五自由

积分
108021
发表于 2006-7-19 17:59:00 | 显示全部楼层
..这个,已经完全属于了RGSS代码的研究范围了,转..

第 五 自 由 -   5th  Freedom   -

回复 支持 反对

使用道具 举报

2

主题

134

帖子

1016

积分

⑥精研

积分
1016
发表于 2006-7-19 20:14:21 | 显示全部楼层
对不起~
Graphics.update里确实会更新标题
本来是为了显示FPS用的,但是如果发现标题不同,即使在不显示FPS的情况下也会重新设置标题
对不起,好像没什么办法呢
回复 支持 反对

使用道具 举报

2

主题

134

帖子

1016

积分

⑥精研

积分
1016
发表于 2006-7-19 20:42:51 | 显示全部楼层
用公共事件在游戏画面上弄一条半透明的长条来显示想显示的文字好啦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-29 00:08 , Processed in 0.013543 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表