在主程序之外创建RenderForm(slimdx)

时间:2014-03-13 18:19:30

标签: c# directx visual-studio-2013 slimdx

我刚刚陷入苗条DX的困境。

我的MdiParent名称是视图

我想要做的是创建一个RenderForm()或者simular,在Form应用程序内部作为MdiChild,RenderForm()是我们显示DirectX的表单。 这样做的原因是能够在Parent窗体内创建菜单栏和按钮等。 我尝试为渲染创建一个新表单,但它与MessagePump()的工作效果不佳。整个应用程序挂起。原因可能是无休止的循环。 我尝试过的另一种方法是通过从主程序中调用函数在视图中创建一个RenderForm由于主程序在执行任何代码之后

Application.EnableVisualStyles();
Application.Run(new view()); 

,因此不能很好地工作。 我尝试了很多不同的方法,但是没有成功。我用google搜索了几个小时没有结果。

我试图修改的代码是从SlimDX教程2中复制的:

{{1}}

我从未成功将MessagePump()置于主程序之外。

1 个答案:

答案 0 :(得分:0)

我已经和SlimDX玩了几天了。 MessagePump()确实创建了一个无限循环。我相信您可以在新线程上创建子表单,或者只使用RenderForm而不是Form来扩展父表单,这就是我所做的。

public partial class view: RenderForm
{
    public View()
    {
        // The static void Main code goes here
    }
}

修改

这是你如何在父母的新线程上启动它:

public partial class Form1 : Form
{
    Form2 renderForm;

    public Form1()
    {
        InitializeComponent();

        openNewRenderForm();
    }

    private void openNewRenderForm()
    {
        Thread thread = new Thread(new ThreadStart(startRenderForm));
        thread.Start();
    }

    private void startRenderForm()
    {
        renderForm = new Form2();
    }
}

只需删除" var form = new RenderForm("教程2:设备创建");"如果Form2扩展RenderForm,则来自RenderForm的行。