You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求GMS 2.33下关闭UI窗口的正确DM脚本方案

解决GMS 2.33中关闭UI窗口导致崩溃的问题

在GMS 2.x版本中,UI框架的生命周期管理机制和1.x有较大差异,你原来的代码直接操作DocumentWindow会绕过框架的内部校验逻辑,从而引发崩溃。下面是修正后的方案:

正确的关闭方式

直接调用UIFrame自身的Close()方法,这是GMS 2.x官方推荐的安全操作:

Class mainUI:UIFrame {
    void CloseMe(object self) {
        // 使用UIFrame内置的Close方法,会正确处理窗口关闭的全流程
        self.Close(0);
    }
}

为什么原代码会崩溃

GMS 2.33中,GetFrameWindow()返回的DocumentWindow对象和UIFrame实例的绑定关系更紧密,直接调用WindowClose()会跳过UI框架的资源释放、状态同步等关键步骤,导致内存访问异常或资源泄漏,最终触发DigitalMicrograph崩溃。而UIFrame.Close()方法会自动处理这些内部逻辑,确保窗口安全关闭。

额外提示

如果需要在关闭前添加确认逻辑,可以这样扩展:

void CloseMe(object self) {
    if (MessageBox("确认关闭窗口吗?", "提示", MB_YESNO) == IDYES) {
        self.Close(0);
    }
}

内容的提问来源于stack exchange,提问作者user6406828

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:21:01