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

Game Maker透明置顶可点击穿透窗口实现问题求助

Game Maker悬浮层:置顶、透明、点击穿透解决方案

一、窗口置顶问题修复

你当前的DLLMakeWindowTop函数仅注释了SetWindowPos调用,需要正确实现并确保依赖库链接。另外Game Maker的窗口初始化逻辑可能会重置置顶状态,建议在窗口创建完成后(比如Room Start事件)调用该函数。

二、点击穿透实现

要实现点击穿透,需给窗口添加WS_EX_TRANSPARENT和WS_EX_LAYERED扩展样式,结合已有的DWM透明效果,让系统忽略窗口的鼠标事件。

三、完整DLL代码

#include "pch.h"
#include <dwmapi.h>
#include <windows.h>

// 链接所需系统库
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "dwmapi.lib")

extern "C" __declspec(dllexport) void DLLMakeWindowTransparent(HWND hwnd) {
    MARGINS margins = { -1, 0, 0, 0 };
    DwmExtendFrameIntoClientArea(hwnd, &margins);
}

extern "C" __declspec(dllexport) void DLLMakeWindowTopmost(HWND hwnd) {
    // 设置窗口始终置顶,SWP_NOACTIVATE避免抢占焦点
    SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}

extern "C" __declspec(dllexport) void DLLEnableClickThrough(HWND hwnd) {
    // 获取当前窗口扩展样式
    LONG_PTR exStyle = GetWindowLongPtr(hwnd, GWL_EXSTYLE);
    // 添加透明和分层扩展样式
    exStyle |= WS_EX_LAYERED | WS_EX_TRANSPARENT;
    SetWindowLongPtr(hwnd, GWL_EXSTYLE, exStyle);
    // 设置分层窗口透明度(保持完全不透明,由DWM处理背景透明)
    SetLayeredWindowAttributes(hwnd, 0, 255, LWA_ALPHA);
}

四、Game Maker GML调用示例

  1. 先在Game Maker中导入DLL,定义外部函数:
// 在全局初始化脚本中定义
external_define("YourOverlayDLL.dll", "DLLMakeWindowTransparent", dll_cdecl, ty_real, [ty_real]);
external_define("YourOverlayDLL.dll", "DLLMakeWindowTopmost", dll_cdecl, ty_real, [ty_real]);
external_define("YourOverlayDLL.dll", "DLLEnableClickThrough", dll_cdecl, ty_real, [ty_real]);

// 获取Game Maker窗口句柄
var hwnd = window_get_handle();

// 调用函数实现所有效果
external_call(DLLMakeWindowTransparent, hwnd);
external_call(DLLMakeWindowTopmost, hwnd);
external_call(DLLEnableClickThrough, hwnd);
  1. 建议将上述代码放在Room Start事件中执行,确保窗口已完成初始化。

注意事项

  • 确保DLL编译架构与Game Maker一致(32位/64位),否则会调用失败。
  • 若置顶效果偶尔失效,可在Step事件中周期性调用DLLMakeWindowTopmost,防止其他窗口强制抢占置顶权限。
  • WS_EX_TRANSPARENT会让窗口忽略所有鼠标事件,若需部分区域可点击,可结合区域检测动态切换样式,或使用LWA_COLORKEY指定透明色实现精准穿透。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 16:25:12