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

Project1

 找回密码
 注册会员
搜索
查看: 13302|回复: 29
打印 上一主题 下一主题

[原创发布] [RMXP] 真·后台运行(2009/11/25 重要更新)

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
跳转到指定楼层
1
发表于 2009-6-11 18:54:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 紫苏 于 2009-11-25 11:31 编辑

RMXPBR.rar (207.58 KB, 下载次数: 2792)

2009/06/11:
  • 更新了在窗口失去键盘焦点时不再响应键盘。如果用了全键盘检测脚本,请自行在判断按键等方法中做类似 Input.update 中的 if 判断


2009/07/14:
  • 修正了窗口不在键盘焦点时按键按下仍然保持失去焦点前状态的问题(例:地图上按住 ←,切换到其它窗口,角色就会一直保持左移)


2009/09/01:
  • 不再使用夏娜的 RM 窗口过程脚本,而是采用了 XP 和 VX 通用的后台运行 DLL(详情请参考 [RMVX] 真·后台运行
  • 添加对 Input.trigger? 的键盘焦点判断
  • 在范例工程中增加了后台运行的开关功能演示


2009/11/25:
  • 改变后台运行 DLL 为静态链接 C 运行时(CRT),这样在没有安装 CRT 的平台上也能使用该 DLL。这个改变增加了约 5 倍于原 DLL 的文件大小


后台运行原理:
惊人地简单,以前大家可能都想复杂了

由于有 Graphics.update 调用后就无法后台运行的这个现象,我们可以推测出 Graphics.update 是 RMXP 处理 Windows 消息的函数,消息循环很可能就在 Graphics.update 内部~当窗口过程函数中捕获到某个窗口失去键盘焦点时会发送给窗口过程的消息,整个程序就停止了。

那么自然而然地就会想到,如果我们把这个消息拦截了,Graphics.update 岂不是就发现不了 RMXP 的窗口失去了焦点,而就会继续更新画面了吗?

于是开始动手——首先要用到夏娜大人写的 RM 窗口过程,让我们能在 Graphics.update 之前处理消息~不过这个消息是什么呢?

一开始我以为是 WM_ACTIVATE,但是拦截后发现无效;于是试了 WM_ACTIVATEAPP,于是,见证了奇迹……

请务必保留 Lib 文件夹 以及其中的 BackgroundRunning.dll

评分

参与人数 1星屑 +8 收起 理由
天使怪盗 + 8

查看全部评分

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

2
发表于 2009-6-11 18:58:00 | 只看该作者
终于出现了……期待好久
看了……Very Good
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
3
发表于 2009-6-11 19:37:33 | 只看该作者
先收着了,暂时看不懂= =
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复 支持 反对

使用道具 举报

Lv3.寻梦者

永久的旅行者

梦石
1
星屑
110
在线时间
404 小时
注册时间
2006-12-13
帖子
3091

开拓者贵宾第3届短篇游戏大赛主流游戏组季军第5届短篇游戏比赛季军

4
发表于 2009-6-11 19:50:21 | 只看该作者
好强大...
虽然暂时不需要这个功能,但还是收藏起来先...

转过来技术区了...
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

5
发表于 2009-6-11 19:53:25 | 只看该作者
不用再另外开别的东西了么?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

炎发灼眼的讨伐者

梦石
0
星屑
50
在线时间
1707 小时
注册时间
2007-8-4
帖子
904
6
发表于 2009-6-11 19:54:07 | 只看该作者
不错~{/qiang}

写了很多东西 看过很多 都知道大部分处理窗口焦点都是 WM_ACTIVATEAPP 消息。。= =但完全没想到= ={/gg}
RMXP&RMVX通用Web化完成- -|||
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

7
发表于 2009-6-11 19:55:57 | 只看该作者
紫苏大大再写个VX版吧……
这个直接帖到VX里会挂掉
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

8
发表于 2009-6-11 20:21:50 | 只看该作者
紫苏总是能给人带来惊喜{/gg}

发现后遗症

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

穿越一季:朔

梦石
0
星屑
50
在线时间
333 小时
注册时间
2007-4-11
帖子
5369

贵宾

9
发表于 2009-6-11 21:01:16 | 只看该作者
仍在测试中..
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
10
 楼主| 发表于 2009-6-11 21:02:30 | 只看该作者
以下引用越前リョーマ于2009-6-11 11:53:25的发言:

不用再另外开别的东西了么?

不用了,现在看来美兽大人的那个确实绕弯路了~

以下引用zh99998于2009-6-11 11:55:57的发言:

紫苏大大再写个VX版吧……
这个直接帖到VX里会挂掉

不知道到为啥,我自从换了 vista 之后 VX 就使用不能了(1.01),一打开 game.exe 就提示找不到 dll,如果直接复制 dll 到游戏目录的话则提示

还是请夏娜大人给 VX 写一个窗口过程吧

以下引用后知后觉于2009-6-11 12:21:50的发言:

发现后遗症
呃,我的卡巴没报这个,应该无大碍吧
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 03:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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