【发布时间】:2021-04-26 07:39:32
【问题描述】:
我已经尝试了一段时间来解决这个问题,但我还没有在网上看到任何关于这个主题的解决方案。
问题是在将 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 为何不返回窗口以及为什么这段特定代码不起作用的人。
【问题讨论】:
-
XNA 的旧版本(这是我移植到 MonoGame 使用的旧项目)也有 Game.Window 是一个 GameWindow 实例,它确实能够从它的句柄返回一个 Form ,所以我不再完全确定了。
-
您说“此外,我希望这个项目是跨平台的”,但如果您依赖于 Form(和 Winforms),那么它已经不是跨平台的。 Bass我不熟悉,但是如果它依赖于Windows Form来初始化,那么它也不是跨平台的。