交换数据
与大多数对话框一样,属性表和应用程序之间的数据的交换是属性表的最重要的函数之一。 本主题介绍如何完成此任务。
与属性表交换数据实际上是与属性表的各个属性页交换数据。 与属性页交换数据的过程和与对话框交换数据的过程相同,因为 CPropertyPage 对象只是专用的 CDialog 对象。 该过程利用了框架的对话框数据交换 (DDX) 工具,它在对话框中的控件和对话框对象的成员变量之间交换数据。
与属性表交换数据以及与常见对话框交换数据的重要区别在于属性表有多个页,因此您必须与属性表中的所有页交换数据。 有关 DDX 的详细信息,请参阅对话框数据交换和验证。
以下示例演示在一个视图和属性表的两个页之间交换数据:
void CMyView::DoModalPropertySheet()
{
CPropertySheet propsheet;
CMyFirstPage pageFirst; // derived from CPropertyPage
CMySecondPage pageSecond; // derived from CPropertyPage
// Move member data from the view (or from the currently
// selected object in the view, for example).
pageFirst.m_nMember1 = m_nMember1;
pageFirst.m_nMember2 = m_nMember2;
pageSecond.m_strMember3 = m_strMember3;
pageSecond.m_strMember4 = m_strMember4;
propsheet.AddPage(&pageFirst);
propsheet.AddPage(&pageSecond);
if (propsheet.DoModal() == IDOK)
{
m_nMember1 = pageFirst.m_nMember1;
m_nMember2 = pageFirst.m_nMember2;
m_strMember3 = pageSecond.m_strMember3;
m_strMember4 = pageSecond.m_strMember4;
GetDocument()->SetModifiedFlag();
GetDocument()->UpdateAllViews(NULL);
}
}