SDB>Можно кусочек кода посмотреть? Что есть модуль и что есть форма?
Да просто если стандартный проект создать с двумя диалоговами окнами...и надо как то из одого окна обратиться к другому... пусть даже do.Modal сделать второму окну из основного...
Re[3]: Обратиться из одного дилога к другому. HELP...
SDB>>Можно кусочек кода посмотреть? Что есть модуль и что есть форма?
N>Да просто если стандартный проект создать с двумя диалоговами окнами...и надо как то из одого окна обратиться к другому... пусть даже do.Modal сделать второму окну из основного...
Ну например посетить в один диалог указатель на другой перед вызовом DoModal. Или сразу на указатель контрол
Re[4]: Обратиться из одного дилога к другому. HELP...
Ну пусть диалог в котором исходный контрол — объект класса CoolDlg. В нем есть объект класса CoolCtrl. Делаешь в CoolDlg метод CoolCtrl* GetCoolControl();
Дальше. Пусть второй дилог — объект класса SecondDlg. Объявляешь в этом классе приватное поле CoolDlg* m_cool_dlg (не забудь занулить в конструкторе). И паблик метод SetCoolDlg(CoolDlg*), в котором сетишь это m_cool_dlg. А потом юзай в диалоге m_cool_dlg->GetCoolControl.
Ну и не забудь перед вызовом SecondDlg.DoModal вызвать SetCoolDlg
Re[6]: Обратиться из одного дилога к другому. HELP...
мда...так сразу мне не разобрать то что Вы мне написали...надо головку поломать чуток...
все-таки не отказался бы от иходника...
может тогда на примере...
вот создал чистое приложение,и дописал
---------------------------------
del13Dlg.h:
дописал: #include "About.h"
class Cdel13Dlg : public CDialog
{
// Construction
public:
Cdel13Dlg(CWnd* pParent = NULL); // standard constructor
дописал:CAbout m_dlg;
---------------------------------
del13Dlg.cpp:
void Cdel13Dlg::OnBnClickedOk()
{
дописал: m_dlg.DoModal;
}
Модальное оно не всплывает...m_dlg ссылается на нулевой хендл...(вообщем то, то что это все не работает логично Ж) )
так что еще надо дописать чтоб работало?
Re[7]: Обратиться из одного дилога к другому. HELP...
Ну вы, батенька, даете.
Голова-то на то и дана, чтобы ею думать.
Ну напишу я куда какую строчку сунуть — и тольку? Работа программы — не цель, когда не знаешь базовых вещей
Я расписал достаточно подробно, что и где надо сделать.
Re[7]: Обратиться из одного дилога к другому. HELP...
Здравствуйте, napalum, Вы писали:
N>мда...так сразу мне не разобрать то что Вы мне написали...надо головку поломать чуток... N>все-таки не отказался бы от иходника...
N>может тогда на примере... N>вот создал чистое приложение,и дописал
N>--------------------------------- N>del13Dlg.h: N>дописал: #include "About.h" N>class Cdel13Dlg : public CDialog N>{ N>// Construction N>public: N> Cdel13Dlg(CWnd* pParent = NULL); // standard constructor N>дописал:CAbout m_dlg; N>--------------------------------- N>del13Dlg.cpp: N>void Cdel13Dlg::OnBnClickedOk() N>{ N>дописал: m_dlg.DoModal; N>}
N>Модальное оно не всплывает...m_dlg ссылается на нулевой хендл...(вообщем то, то что это все не работает логично Ж) ) N>так что еще надо дописать чтоб работало?
1. Послушайте совета SchweinDeBurgа, и попробуйте сделать, как он сказал. Получить доступ к ЭЛЕМЕНТАМ УПРАВЛЕНИЯ МОДАЛЬНОГО диалога достаточно затруднительно из места, где создался модальный диалог. Лучше сделать наоборот, из модального диалога доступаться в то место, откуда создан модальный диалог. То место — это CFirstDialog в примере SchweinDeBurgа ( Cdel13Dlg в Вашем случае ). А CSecondDialog Вам надо будет создать самому и добавить в него конструктор
в котором передается указатель но то самое место.
SchweinDeBurg описал Вам все, что нужно добавить в Ваш второй диалог, чтобы он заработал.
2. В принципе, учитывая, что у Вас dialog-based приложение, Вы можете всегда доступиться к окну главного (первого) диалога через AfxGetMainWnd() и сделать повышающее преобразование типа, однако способ SchweinDeBurgа чище.
Re[8]: Обратиться из одного дилога к другому. HELP...
_>2. В принципе, учитывая, что у Вас dialog-based приложение, Вы можете всегда доступиться к окну главного (первого) диалога через AfxGetMainWnd() и сделать повышающее преобразование типа
Спасибо )
это то что мне надо на данной стадии моей проги...
хотя я бы был не против что бы, к примеру, переменная компонента дерва была бы доступна из любого модуля...
Re[9]: Обратиться из одного дилога к другому. HELP...
_>>2. В принципе, учитывая, что у Вас dialog-based приложение, Вы можете всегда доступиться к окну главного (первого) диалога через AfxGetMainWnd() и сделать повышающее преобразование типа
N>Спасибо ) N>это то что мне надо на данной стадии моей проги...
N>хотя я бы был не против что бы, к примеру, переменная компонента дерва была бы доступна из любого модуля...
Понимаете, Ваше решение не является общепринятым, поэтому его не так легко правильно реализовать.
Сложность в том, что Вы хотите доступаться к элементу управления модального диалога во время работы функции DoModal. При этом Вам, по-видимому, требуется производить какие-то действия с внутренней реализацией триконтрола во время его отображения.
Практичнее поступить следующим образом:
1. Отнаследоваться от триконтрола и внести все эти действия в класс-наследник.
2. Создавать триконтрол во втором диалоге либо в редакторе ресурсов с последующими Atatch/Detach либо динамически.
3. Создать во-втором диалоге открытые переменные для результатов работы триконтрола. В эти переменные будет происходить запись состояния триконтрола при нажатии кнопки OK на втором диалоге (эту запись необходимо сделать Вам в SecondDialog вручную). Эти переменные будут доступны во втором диалоге после вызова функции DoModal, и Вы сможете к ним легко доступиться из первого диалога.
Re: Обратиться из одного дилога к другому. HELP...
Здравствуйте, napalum, Вы писали:
N>Уже несколько дней бюсь как, к примеру, обратиться из главной формы к элементу другой формы...и все лажа одна какая-то получается...
N>Вообще нужно из модуля(.h) обратиться к дереву находящегося на форме...(1ая постановка для простоты описана)
Э-э-э, насколько я понял из темы, тебе надо GetWindow(),
или там указатель на один диалог передавать другому,
а из вопроса, что надо GetDlgItem()?