我正在使用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”,但我无法为上述要求开发方法......
有办法吗?
答案 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
不被点击
因此,如果您希望在您的应用中使用您的课程,则需要:
总结一下,你会有类似的东西:
System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
/*Your converted Reading function */
MessageBox::Show("Error ! Could not open file: "+ FileName);
}