如何在Visual C ++中显示和隐藏表单?

时间:2010-06-21 20:47:59

标签: visual-c++ visual-c++-2010

嘿伙计们,我是Visual C ++的新手,但不是C ++。我在试图弄清楚如何显示/隐藏表格时遇到了问题。

假设我有一个表单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''

1 个答案:

答案 0 :(得分:2)

问题很可能是由于您将标头包含在.cpp文件中的顺序。在原始情况下,当您在Form1.cpp中工作时,“TestForm”在包含Form1.h之前是已知类型。只要您切换头文件,您的方法就会调用,但情况不再如此。

我建议将事件处理程序(按钮单击功能)移动到.cpp文件。您的.cpp文件都可以包含两个标头,并且无论您包含标头的顺序如何,编译器都会正确地找到表单定义及其方法。