我有一个属性表,它包含4个页面。在第二个页面,我有一个列表控件,它被一些值枚举。在第三页我有一个listbox.w值列表控件是什么获取第二页的枚举,应该添加到第三页的列表框中。 //第二页listcontrol的DDX例程如下。
void DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST_MODEL, m_listCtrl);
}
//第三页lisbox的DDX例程如下。
void DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST_BOX, m_listBoxCtrl);
}
在第二页OnWizardNext()中,我添加了以下代码,将第二页listcontrol值分配给第三页成员变量。
LRESULT OnWizardNext()
{
UpdateData(TRUE);
int nListItemCount = m_listCtrl.GetItemCount();
m_str = m_listCtrl.GetItemText(0,1);
m_str1 = m_listCtrl.GetItemText(0,2);
m_str2 = m_listCtrl.GetItemText(0,3);
//assigning the second page data member values to the third page member variables.
CConfirmationView dlg;//third page class
dlg.m_szItemData.Format(L" %s",m_str);
dlg.m_szItemData1.Format(L" %s",m_str1);
dlg.m_szItemData2.Format(L" %s",m_str2);
UpdateData(FALSE);
return CPropertyPage::OnWizardNext();
}
在第三页OnInitDialog()中,我添加了这段代码,将从第二页listcontrol中检索到的值添加到第三页列表框中,如下所示。
BOOL OnInitDialog()
{
CPropertyPage::OnInitDialog();
Updatedata(FALSE);
m_ListBoxCtrl.AddString(m_szItemData);
m_ListBoxCtrl.AddString(m_szItemData1);
m_ListBoxCtrl.AddString(m_szItemData2);
return TRUE;
}
//从InitInstance()
调用向导#include "firstpage.h"
#include "secondpage.h"
#include "thirdpage.h"
#include "fourthpage.h"
#include "myapp.h"
BOOL InitInstance()
{
CMyWizardSheet mysheet;
CFirstPage pg1;
CSecondPage pg2;
CThirdPage pg3;
CFourthPage pg4;
mysheeet.AddPage(&pg1);
mysheeet.AddPage(&pg2);
mysheeet.AddPage(&pg3);
mysheeet.AddPage(&pg4);
}
这就是我正在做的事情。我想将listcontrol(第二页)的项目数据添加到列表框(第三页)。 任何人都可以告诉我们如何在页面之间交换数据。
答案 0 :(得分:0)
CConfirmationView dlg;//third page class
不起作用,您需要在创建对话框时指向对话框的ACTUAL实例(通常在您的应用程序的InitInstance()
方法中);您可以将指向对话框的指针存储为app类中的成员变量。
// add member variable in myapp class (myapp.h)
public:
CThirdPage *m_pThirdPage;
// in myapp InitInstance(), after all the AddPage() calls
m_pThirdPage = &pg3;
第二页的OnWizardNext()
将具有类似
//assigning the second page data member values to the third page member variables.
myapp *pApp = (myapp *) AfxGetApp();
pApp->m_pThirdPage->m_szItemData.Format(L" %s",m_str);
pApp->m_pThirdPage->m_szItemData1.Format(L" %s",m_str1);
pApp->m_pThirdPage->m_szItemData2.Format(L" %s",m_str2);
答案 1 :(得分:0)
通过构造函数(this)将指针传递给CProperySheet
到每个CPropertyPages
,这样您就可以访问父表中定义的所有页面,然后将页面声明为友元类到其他关注页面,以便您可以访问所需的成员并致电他们的UpdateData()
。