搜索附件  
同能RPG制作大师 附件中心 同能RM技术讨论区 RPG Maker XP 讨论区 [RMXP] 真·后台运行(2009/11/25 重要更新): RMXPBR.rar

[RMXP] 真·后台运行(2009/11/25 重要更新): RMXPBR.rar

 

[RMXP] 真·后台运行(2009/11/25 重要更新):


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
             本帖来自P1论坛作者紫苏,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=126922  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
Loading...

QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

GMT+8, 2024-11-24 03:47 , Processed in 0.050424 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部