如何从Win32控制台应用程序类更改WinForm控件的属性

时间:2014-05-02 10:20:31

标签: c++ winforms visual-c++

我正在使用Visual C ++为我的学校项目创建一个简单的编译器和图形界面(Windows窗体)。

我使用Visual C ++ Win32控制台应用程序项目来开发主要类:读取,编译,汇编等。它一直运行到现在作为控制台应用程序,但问题是我不知道如何“将我的类与Windows窗体集成”。

例如我有我的阅读课:

class Reading {
private:
   string TheFile;
   long TheFileLength;
   long TheFileMark;
   long CurrentLine;

public:
Reading() {
    TheFileMark=0;
    CurrentLine=1;
}
void OpenTheFile(basic_string<TCHAR> FileName);
enum WordTypes{EndOfLine, Identifier, Number, String, Symbol, None};
};

当我尝试在OpenTheFile方法中打开文件时:

void Reading::OpenTheFile(basic_string<TCHAR> FileName) {
   ifstream File(FileName.c_str(), ios::in);
   if (File.is_open() == false) {
      cout << "Error ! Could not open file: "<<FileName <<endl;
      exit(1);
   }
}

我实际上想要替换“cout”,以便它将在Windows窗体控件中显示消息,例如在TextBox中。

我在项目的.cpp文件中包含了我的“Reading.h”,但我无法为上述要求开发方法......

有办法吗?

1 个答案:

答案 0 :(得分:0)

您无法使用winform应用程序使该代码正常工作。在使用winform application时,您正在使用不同的语言编译C ++ / CLI。语法与C ++完全相同,但它可以处理其他功能 在控制台应用程序中,每行代码都是一个接一个地执行。这意味着,如果您有300行代码,那些将被执行但编译器会发现某种错误 在Winform中,它不一定是真的。如果你想要编译一些代码,你必须发起一些事件 让我们举个例子吧。您的应用程序带有一个按钮,如果按下该按钮,将显示一个带有&#34; Hello World&#34;的弹出窗口。你会像这样编码:

System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
   MessageBox::Show("Hello World");
}

此代码不会被&#34;看到&#34;由编译器直到button1不被点击 因此,如果您希望在您的应用中使用您的课程,则需要:

  • 使用C ++ / CLI进行转换(+查找有关创建winform应用程序的一些教程:D)
  • 弄清楚您希望调用函数的时间和位置以及代码,例如按钮的单击事件(但您可以选择很多选项)。

总结一下,你会有类似的东西:

System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
  /*Your converted Reading function */
  MessageBox::Show("Error ! Could not open file: "+ FileName);
}