É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 l’application est l’une des fonctions les plus importantes de la feuille de propriétés. Cet article explique comment effectuer cette tâche.
L’échange de données avec une feuille de propriétés est en fait une question d’échange de données avec les pages de propriétés individuelles de la feuille de propriétés. La procédure d’échange de 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 n’est qu’un objet CDialog spécialisé. La procédure tire parti de la fonctionnalité DDX (Dialog Data Exchange) du framework, qui échange des données entre des contrôles dans une boîte de dialogue et des variables membres de l’objet de boîte de dialogue.
La différence importante entre l’échange de données avec une feuille de propriétés et une boîte de dialogue normale est que la feuille de propriétés comporte plusieurs pages. Vous devez donc échanger des données avec toutes les pages de la feuille de propriétés. Pour plus d’informations sur DDX, consultez Dialog Data Exchange and Validation.
L’exemple suivant illustre l’échange de 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);
}
}