Visual c++ 如何在Visual C+中显示和隐藏表单+;? 嘿,我对Visual C++是全新的,但不是C++。我在尝试找出如何显示/隐藏表单时遇到问题

Visual c++ 如何在Visual C+中显示和隐藏表单+;? 嘿,我对Visual C++是全新的,但不是C++。我在尝试找出如何显示/隐藏表单时遇到问题,visual-c++,visual-c++-2010,Visual C++,Visual C++ 2010,假设我有一个表单Form1和另一个表单TestForm。在Form1.h中的按钮单击功能中,我有以下代码: Form1::Hide(); TestForm^ form = gcnew TestForm(); form->Show(); 而且效果很好。我点击按钮,Form1消失,TestForm出现。但是,如果我在TestForm.h中做同样的事情(只是更改哪些表单被设置为显示/消失),我会在Form1.h(以前可以工作)和TestForm.h中得到大量的编译器错误 Form1.cpp

假设我有一个表单Form1和另一个表单TestForm。在Form1.h中的按钮单击功能中,我有以下代码:

Form1::Hide();
TestForm^ form = gcnew TestForm();
form->Show();
而且效果很好。我点击按钮,Form1消失,TestForm出现。但是,如果我在TestForm.h中做同样的事情(只是更改哪些表单被设置为显示/消失),我会在Form1.h(以前可以工作)和TestForm.h中得到大量的编译器错误

  Form1.cpp
c:\users\alex\documents\visual studio 2010\projects\test\test\TestForm.h(86): error C2065: 'Form1' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\TestForm.h(86): error C2065: 'form' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\TestForm.h(86): error C2061: syntax error : identifier 'Form1'
c:\users\alex\documents\visual studio 2010\projects\test\test\TestForm.h(87): error C2065: 'form' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\TestForm.h(87): error C2227: left of '->Show' must point to class/struct/union/generic type
          type is ''unknown-type''
  TestForm.cpp
c:\users\alex\documents\visual studio 2010\projects\test\test\Form1.h(103): error C2065: 'TestForm' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\Form1.h(103): error C2065: 'form' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\Form1.h(103): error C2061: syntax error : identifier 'TestForm'
c:\users\alex\documents\visual studio 2010\projects\test\test\Form1.h(104): error C2065: 'form' : undeclared identifier
c:\users\alex\documents\visual studio 2010\projects\test\test\Form1.h(104): error C2227: left of '->Show' must point to class/struct/union/generic type
          type is ''unknown-type''

问题很可能是由于将头文件包含到.cpp文件中的顺序造成的。在最初的例子中,当您在Form1.cpp中工作时,“TestForm”是包含Form1.h之前的已知类型。只要您切换头文件,您的方法调用就会停止,现在不再是这种情况了


我建议将事件处理程序(按钮单击函数)移动到.cpp文件中。您的.CPP文件都可以包括头文件,编译器将适当地找到表单定义,不管您包含了什么标题。

我确实建议在.NET和Windows窗体的情况下使用C语言。我有很多C++代码,我不想重写,所以C是不是一个选项。谢谢里德!这是我考虑并尝试过的一件事,但在语法上有问题。在.h文件中,函数声明为“private:System::Void button1_Click(System::Object^sender,System::EventArgs^e);”。在.cpp文件中,我尝试了“System::Void TestForm::button1_Click(System::Object^sender,System::EventArgs^e){this->Hide();}”,但收到了错误“TestForm.cpp(5):错误C2653:'TestForm:'不是类或命名空间名称”和“TestForm.cpp(7):错误C2355:'this':只能在非静态成员函数中引用”@亚历克斯:确保将名称空间放在适当的位置,或者将其包含在名称空间块中。如果你那样做,它应该会起作用。