2012-01-05 136 views
0

不知道为什么这不会编译。我在这里做了什么样的错误,我该如何解决它?我试图编译我在一个例子中找到的代码,但是我的编译器必须比他们的编译器有更严格的设置,或者可能是不同版本的编译器。代码应该打开一个窗体并显示一些文本。错误:“表达式必须具有类的类型”C++/CLI

using namespace System; 
using namespace System::Windows::Forms; 
using namespace System::Drawing; 

public ref class MyForm : Form 
{ 
public: 

MyForm() 
    { 
    Text = "Windows Forms Demo"; 
    } 

void Main() 
    { 
    Application.Run (gcnew MyForm()); 
    } 

protected: 
void OnPaint (PaintEventArgs e) 
    { 

    e.Graphics.DrawString ("Hello, world", Font, 
     gcnew SolidBrush (Color.Black), ClientRectangle); 
    } 
} 
+0

对不起,错误在线“e.Graphics.DrawString”e突出显示,它表示表达式必须有一个类的类型 – 2012-01-05 08:48:57

+0

您的编译器应该给你一些行信息和详细的错误信息。尝试使用您的编译器启用所有警告。 – 2012-01-05 08:49:01

回答

0

你写不正确的语法来override和访问方法。

virtual void OnPaint(PaintEventArgs^ e) override 
    { 
    Form::OnPaint(e); 
    e->Graphics->DrawString("Hello, world", gcnew System::Drawing::Font("Arial",20), gcnew SolidBrush (Color::Black), ClientRectangle); 
    } 

并且不使用void main()

[STAThreadAttribute] 
int main() 
{ 
    Application::Run(gcnew Form1()); 
    return 0; 
} 
0

错误与Font,这是一个类。该调用需要一个字体,即一个Font实例。

相关问题