Échange de données
Comme avec la plupart des boîtes de dialogue, l'échange de données entre la feuille de propriétés et des applications représentent l'une des fonctions les plus importantes de la feuille de propriétés. Cet article explique comment accomplir cette tâche.
Échange de données avec une feuille de propriétés est en réalité une question d'échange de données avec des pages de propriétés de la feuille de propriétés. La procédure pour échanger des données avec une page de propriétés est la même que pour l'échange de données avec une boîte de dialogue, car un objet CPropertyPage est simplement un objet spécial CDialog. La procédure bénéficie de la fonction de l'échange de données de boîtes de dialogue de l'infrastructure (DDX), les données d'échanges entre des contrôles dans une boîte de dialogue et les variables membres de la boîte de dialogue objet.
La différence importante entre l'échange de données avec une feuille de propriétés et une boîte de dialogue standard est que la feuille de propriétés contient plusieurs pages, vous devez les données d'échange avec toutes les pages dans la feuille de propriétés. Pour plus d'informations sur DDX, consultez Échange et validation de données de boîtes de dialogue.
L'exemple suivant illustre échanger des données entre une vue et deux pages d'une feuille de propriétés :
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);
}
}