赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 紫苏 于 2009-11-25 11:31 编辑
RMXPBR.rar
(207.58 KB, 下载次数: 2790)
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 |
评分
-
查看全部评分
|