| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Как в дочернем окне достучаться до родительского? |
| Автор: unLIMIT1984 17.5.2009, 23:24 | ||||
| Ребят, привет. С++ Windows Forms (VS2005) Есть многооконное приложение. Form1 - главное окно (IsMdiContainer=true). Form2 - дочернее окно. Необходимо при создании Form2 передать ссылку на Form1, чтобы в дочернем окне иметь доступ к членам родительского окна. То, до чего дошел:
Ошибки возникают следующие: Line Error 1 error C2027: use of undefined type 'mdiApp::Form1' Form2.h 30 Error 2 error C2227: left of '->label1' must point to class/struct/union/generic type Form2.h 30 Error 3 error C2227: left of '->Text' must point to class/struct/union/generic type Form2.h 30 Error 4 error C2027: use of undefined type 'mdiApp::Form1' Form2.h 30 Error 5 error C2227: left of '->label1' must point to class/struct/union/generic type Form2.h 30 Error 6 error C2227: left of '->Text' must point to class/struct/union/generic type Form2.h 30 Помогите пожалуйста исправить ошибки. PS: на всякий случай прикрепляю файлы проекта |
| Автор: Partizan 18.5.2009, 12:09 |
| unLIMIT1984, файлы не прикрепились... по сабжу - надо инклуд добавить в Form2.h: #include "Form1.h" Из сообщения компилятора же ясно видно, что он не может найти тип Form1 |
| Автор: unLIMIT1984 18.5.2009, 21:37 |
| Добавлял include - не помогает. Прикрепил файл. |
| Автор: Partizan 18.5.2009, 22:35 | ||||
|
| Автор: unLIMIT1984 20.5.2009, 17:29 |
| Partizan, здорово. Спасибо большое тебе. Подскажи пожалуйста, а почему реализацию этих функций нужно выносить в файл cpp? Например, все обработчики вписываются в h-файл автоматически, а также обычные пользовательские функции нормально там живут. |
| Автор: Partizan 21.5.2009, 05:31 |
| unLIMIT1984, MSDN говорит, что класс должен быть полностью определён в момент его использования. Вообще, если говорить о C++, то хороший тон - в хедерах определять прототипы, а в cpp - реализацию. Добавлено через 1 минуту и 12 секунд unLIMIT1984, я к тому, что если бы не было перекрёстной зависимости, то всё бы было ок и в текущем варианте... |
| Автор: MaksSh 22.5.2009, 19:29 | ||
| Всем привет я использую С++ Windows Forms (VS2008) у меня тоже многооконное приложение разница в том что на второй форме есть button, при нажатии на которую я обращаюсь к объекту с первой формы
на что мне компилятор резонно отвечает error C2039: buttonCreatRevJount_Click: не является членом "My_VeshicleEditor::FormCreateRevJount" 1> e:\visual studio 9\my_editor\my_veshicleeditor\FormCreateRevJount.h(25): см. объявление 'My_VeshicleEditor::FormCreateRevJount' 1>e:\visual studio 9\my_editor\my_veshicleeditor\FormCreateRevJount.h(84) : error C2065: buttonCreatRevJount_Click: необъявленный идентификатор 1>e:\visual studio 9\my_editor\my_veshicleeditor\FormCreateRevJount.h(84) : error C3350: System::EventHandler: конструктор делегата ожидает 2 аргументов а если функцию buttonCreatRevJount_Click реализовывать в нидере то error C2027: использование неопределенного типа "My_VeshicleEditor::Form1" 1> e:\visual studio 9\my_editor\my_veshicleeditor\FormCreateRevJount.h(23): см. объявление 'My_VeshicleEditor::Form1' 1>e:\visual studio 9\my_editor\my_veshicleeditor\FormCreateRevJount.h(109) : error C2227: выражение слева от "->render" должно указывать на тип класса, структуры или объединения либо на универсальный тип 1>e:\visual studio 9\my_editor\my_veshicleeditor\FormCreateRevJount.h(109) : error C2227: выражение слева от "->createNewRevJount" должно указывать на тип класса, структуры или объединения либо на универсальный тип 1>FormCreateRevJount.cpp прямо замкнутый круг какой то |
| Автор: Partizan 22.5.2009, 19:44 |
| MaksSh, проект в студию |
| Автор: MaksSh 22.5.2009, 20:05 | ||
| Partizan исходники, или просто в коде? а то у меня проект большой Добавлено через 3 минуты я все сделал как описывалось выше проблема только с функцией
Добавлено через 4 минуты и 17 секунд ой извиняюсь не тот код поставил надо С++ |
| Автор: MaksSh 22.5.2009, 21:11 |
| Вот пример создающий подобную ситуацию |