Austausch von Daten
Wie bei den meisten Dialogfeldern ist der Datenaustausch zwischen dem Eigenschaftenblatt und der Anwendung eine der wichtigsten Funktionen des Eigenschaftenblatts. In diesem Artikel wird beschrieben, wie Sie diese Aufgabe ausführen.
Der Austausch von Daten mit einem Eigenschaftenblatt ist eigentlich eine Frage des Austauschs von Daten mit den einzelnen Eigenschaftenseiten des Eigenschaftenblatts. Das Verfahren zum Austauschen von Daten mit einer Eigenschaftenseite entspricht dem Austausch von Daten mit einem Dialogfeld, da ein CPropertyPage-Objekt nur ein spezialisiertes CDialog-Objekt ist. Das Verfahren nutzt die Einrichtung des Dialogdatenaustauschs (Dialog Data Exchange, DDX) des Frameworks, die Daten zwischen Steuerelementen in einem Dialogfeld und Membervariablen des Dialogfeldobjekts austauschen.
Der wichtige Unterschied zwischen dem Austausch von Daten mit einem Eigenschaftenblatt und einem normalen Dialogfeld besteht darin, dass das Eigenschaftenblatt über mehrere Seiten verfügt, sodass Sie Daten mit allen Seiten im Eigenschaftenblatt austauschen müssen. Weitere Informationen zu DDX finden Sie unter Dialog Data Exchange and Validation.
Das folgende Beispiel veranschaulicht den Austausch von Daten zwischen einer Ansicht und zwei Seiten eines Eigenschaftenblatts:
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);
}
}