Обмен данными между вкладками диалоговых окон.
От: Dan  
Дата: 05.10.01 20:39
Оценка:
Подскажите пожалуйста, как работать и обмениваться данными между закладками диалогового окна? Если эти закладки реализованы с помощью CPropertySheet. (Для каждой закладки создан свой диалоговый ресурс):

#include "ppage1.h"
#include "ppage2.h"
...
class CMyPSheet: public CPropertySheet
{
...
protected:
CPropPage1 page1;
CPropPage2 page2;
...
}
Re: Обмен данными между вкладками диалоговых окон.
От: Igor Soukhov  
Дата: 05.10.01 20:52
Оценка:
Здравствуйте Dan, Вы писали:

Dan>Подскажите пожалуйста, как работать и обмениваться данными между закладками диалогового окна? Если эти закладки реализованы с помощью CPropertySheet. (Для каждой закладки создан свой диалоговый ресурс):



Dan>#include "ppage1.h"

Dan>#include "ppage2.h"
Dan>...
Dan>class CMyPSheet: public CPropertySheet
Dan>{
Dan> ...
Dan> protected:
Dan> CPropPage1 page1;
Dan> CPropPage2 page2;
Dan> ...
Dan>}
в ctor'е каждой страницы передавать указатель на PropSheet.

class CMyPSheet: public CPropertySheet
{
...
   CMyPSheet()
   :page1(this), page2(this)
   {
   }
    
 
protected:
   CPropPage1 page1; 
   CPropPage2 page2;
...
};


соотвественно этот указатель сохранить в членах класса страницы
и обмениваться данными через данные PropSheet'а — то есть делаешь
изменения в page1 жмешь "Apply" — по указалеть на PropSheet пишешь
измененные данные в PropSheet (в дата мемберы), на OnSetActive
page2 обновляешь данные в котролах ... и.т.д.
* thriving in a production environment *
Re[2]: Обмен данными между вкладками диалоговых окон.
От: Dan  
Дата: 29.10.01 08:46
Оценка:
Здравствуйте Igor Soukhov, Вы писали:

IS>соотвественно этот указатель сохранить в членах класса страницы

IS>и обмениваться данными через данные PropSheet'а — то есть делаешь
IS>изменения в page1 жмешь "Apply" — по указалеть на PropSheet пишешь
IS>измененные данные в PropSheet (в дата мемберы), на OnSetActive
IS>page2 обновляешь данные в котролах ... и.т.д.

А поподробнее?
Если в описании класса AlgExp1.h:

#include "Page1.h"
#include "Page2.h"
class CAlgExp : public CPropertySheet
{
DECLARE_DYNAMIC(CAlgExp)

// Construction
public:

CAlgExp(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
CAlgExp(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
//CAlgExp(): m_page1(this), m_page2(this){ };
// Attributes
public:
CPage1 m_page1;
CPage2 m_page2;


А в AlgExp1.cpp файле:

IMPLEMENT_DYNAMIC(CAlgExp, CPropertySheet)

CAlgExp::CAlgExp(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(nIDCaption, pParentWnd, iSelectPage){
AddPage(&m_page1);
AddPage(&m_page2);
}

CAlgExp::CAlgExp(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(pszCaption, pParentWnd, iSelectPage){
AddPage(&m_page1);
AddPage(&m_page2);
}

Притом еще есть 2 класса CPage1 и CPage2. Что следует прописывать в header файлах Page1.h и Page2.h, а также в файлах Page1.cpp и Page2.cpp?

Может быть проще создать глобальную переменную, в которую записывть нужные данные, но опять же где ее создавать. (в algexp.h или algexpdlg.h)? Заранее благодарю.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.