Как показать и скрыть формы в Visual C ++? - PullRequest
0 голосов
/ 22 июня 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 Ответ

2 голосов
/ 22 июня 2010

Проблема, скорее всего, связана с порядком, в котором вы включаете заголовки в файлы .cpp.В исходном случае, когда вы работали в Form1.cpp, «TestForm» был известным типом до включения Form1.h.Как только вы переключите заголовочные файлы на вызовы вашего метода, это уже не так.

Я рекомендую переместить ваши обработчики событий (функции нажатия кнопок) в ваши файлы .cpp.Ваши файлы .cpp могут включать оба заголовка, и компилятор найдет определения форм с их методами, независимо от того, в каком порядке вы включаете заголовки.

...