C#在Panel中运行C ++ OpenGL应用程序

时间:2016-07-16 15:33:35

标签: c# c++ opengl

目前我已经用C ++构建了一个呈现OpenGL对象的应用程序。这一切都很好,但我想创建一个控制接口(C#)来控制绘制内容(使用管道或插槽)。

在我的C#应用​​程序中,我有一个名为“canvas”的Panel工具。在画布中我想打开C ++应用程序(C ++应用程序只是一个没有边框的窗口)。基本上我想在我的C#应用​​程序中显示C ++上下文。我尝试使用以下代码(打开应用程序并在“画布”中显示它),但它始终在画布(面板)外面打开exe。对于示例,我使用notepad.exe而不是真正的应用程序。我使用Visual Studio 2015。

我从另一个Stackoverflow主题中借用了代码。

        ProcessStartInfo info = new ProcessStartInfo();
        info.FileName = file;
        info.Arguments = "";
        info.UseShellExecute = true;
        info.CreateNoWindow = true;
        info.WindowStyle = ProcessWindowStyle.Normal;
        info.RedirectStandardInput = false;
        info.RedirectStandardOutput = false;
        info.RedirectStandardError = false;

        Process p = Process.Start(info);                                   
        p.WaitForInputIdle();
        Thread.Sleep(3000);

        Process[] p1;
        if(p.MainWindowHandle == null)
        {
            List<String> arrString = new List<String>();
            foreach (Process proc in Process.GetProcesses())
            {
                arrString.Add(Convert.ToString(proc.ProcessName));
            }
            p1 = Process.GetProcessesByName(file);

            Thread.Sleep(5000);
            SetParent(p1[0].MainWindowHandle, this.canvas.Handle);
        }
        else
        {
            SetParent(p.MainWindowHandle, this.canvas.Handle);
        }

可能有一种更好的方式来达到我想要的目标,但这不是我所知道的。

0 个答案:

没有答案