代码之家  ›  专栏  ›  技术社区  ›  Exp HP

SDL.NET(VB/C#):启动对象和应用程序类型应该是什么?

  •  1
  • Exp HP  · 技术社区  · 17 年前


    尽管它的文档很糟糕,我还是能够修复我的代码来使用它,我喜欢它!

    但是有个问题。我不知道如何设置我的应用程序设置。Startup对象肯定应该是一个类(示例总是在类中,而不是模块中),但Startup类必须是一个表单!这是不好的,因为SDL通过SetVideoMode创建自己的窗口;你不需要表格。因此,当表单构造函数New()完成时, 创建了一个无用的表单,您有两个窗口。

    我尝试在New()中调用游戏引擎循环,这样游戏就可以在New()未完成的情况下启动。游戏运行正常,这解决了“第二窗口”问题。。。 但它不能关闭! X按钮什么也不做,对Events.quit应用程序或Me.Close的调用被公然忽略,等等。

    我被难住了。似乎我需要设置一个非表单类作为启动对象,但它不允许我这样做。

    this one ,它存在于 SdlDotNet 命名空间。

    哦,我忘了提到,我还注意到很多例子都有一行写着“[StatThread]”。这很重要吗?

    编辑 我已经收到并接受了我问题的答案,但我想告诉其他人退出/关闭应用程序有什么问题,尽管这不是我的问题:
    逻辑正在运行时,应用程序仍无法退出

    SdlDotNet.Core.Events.QuitApplication
    End
    

    将它们放置在SdlDotNet.Core.Events.Quit事件的处理程序中,以及您希望程序退出的任何其他位置。

    1 回复  |  直到 17 年前
        1
  •  1
  •   Pavel Minaev    17 年前

    启动对象肯定应该是一个类(示例总是在类中,而不是在模块中)

    这是你的错误。从CLR的角度来看,类和VB模块之间没有真正的区别。所以只要把它做成一个有 Main 然后继续。没有必要上课。我怀疑你在看C#示例,它们使用类——但那是因为C#中没有模块。

    [STAThread] 可能对SDL没有任何影响。这对于UI应用程序很重要(WinForms和WPF都需要它),但我认为SDL不会进行任何COM调用,所以它不应该关心线程是否正确 STA 或者不是。这只是VisualStudio放在上面的东西 主要 默认情况下,在新项目中。

    推荐文章