.NET为VS2003调用控件

时间:2012-01-09 13:03:29

标签: c++ .net invoke visual-studio-2003

我正在尝试在表单上使用Microsoft Web浏览器控件,但是如果您导航到需要很长时间才能加载的站点;整个表单UI锁定,直到所有内容都加载。为了解决这个问题,我试图将Web浏览器控件分开运行到其他所有内容。我使用本教程创建了一个小示例应用程序:http://msdn.microsoft.com/en-us/library/ms171728.aspx

我在以下功能上有错误:

    void SetNavigate(String* text)
    {
        if(this->axWebBrowser1->InvokeRequired)
        {
            SetNavigateDelegate* d = __gc new SetNavigateDelegate(this, &Form1::SetNavigate);
            this->Invoke(d, __gc new Object[] { text });
        }
        else
        {
            this->axWebBrowser1->Navigate(text);
        }
    }

该行具体为:

this-> Invoke(d,__ gc new Object [] {text});

错误C2958:左括号'(''找到'\ testbrowser \ form1.h(56)'未正确匹配

我必须为__delegate,__ gc new为gcnew和^ for *进行子委托,所以我猜这是另一个2003 .NET背后的时间问题,是否有人知道我正在寻找的正确语法来阻止错误出现?

1 个答案:

答案 0 :(得分:0)

2003年,我认为你还不能内联使用{}数组初始值设定项。尝试将__gc new Object [] {text}分配给命名变量。

...并尽一切可能摆脱在vs2003中编写托管c ++。它非常糟糕,2005年引入的C ++ / CLI是一个很大的改进。