首页 > 解决方案 > MonoGame Window.Handle 不返回 Window 或 Form

问题描述

我已经尝试了一段时间来解决这个问题,但我还没有在网上看到任何关于这个主题的解决方案。

问题是在使用 MonoGame 和 Platform DesktopGL 时,Window.Handle 似乎无效。由于尝试从此句柄获取窗口/窗体返回 null,进一步支持这一点的是 BASS.Net 无法在此窗口句柄上播放音频,

这是我尝试使用句柄的部分代码(使用 Bass.Net 进行音频播放):

protected override void Initialize() {
    Game = this;

    //Getting the Form from Window Handle
    Form = (Form)Control.FromHandle(Game.Window.Handle);

    //Initializing Bass with Window Handle
    Bass.BASS_Init(-1, 4100, BASSInit.BASS_DEVICE_DEFAULT, Game.Window.Handle, null);

    base.Initlialize()
}

我试图在网上到处查看,1 个消息来源指出 MonoGame 平台 WindowsDX 显然返回了一个有效的表单,尽管从我注意到的从未版本的 MonoGame 中,这个平台似乎不再受支持,而且我很想拥有这个项目是跨平台的,所以即使它存在/工作,坚持使用 WindowsDX 也不是我认为的一个好的解决方案。

在此先感谢任何设法找到 MonoGame 为什么不返回窗口以及为什么这段特定代码不起作用的人。

标签: c#monogamebass

解决方案


“Window.Handle”仅在 WindowsDX 平台上有效。

OpenGL,不管是什么平台(包括Windows),都可以满足这个要求。

如果您正在寻找跨平台解决方案,请寻找其他地方。


推荐阅读