データの交換

ほとんどのダイアログ ボックスと同様に、プロパティ シートとアプリケーション間のデータの交換は、プロパティ シートの最も重要な機能の 1 つです。 この記事では、このタスクを実行する方法について説明します。

プロパティ シートとデータを交換することは、実際には、プロパティ シートの個々のプロパティ ページとデータを交換することです。 CPropertyPage オブジェクトは特殊化された CDialog オブジェクトにすぎないため、プロパティ ページとデータを交換する手順は、ダイアログ ボックスとデータを交換する場合と同じです。 この手順では、ダイアログ ボックス内のコントロールとダイアログ ボックス オブジェクトのメンバー変数の間でデータを交換する、フレームワークのダイアログ データ エクスチェンジ (DDX) 機能を利用します。

データの交換先がプロパティ シートの場合と通常のダイアログ ボックスの場合の重要な違いは、プロパティ シートには複数のページがあることです。そのため、プロパティ シートのすべてのページとデータを交換する必要があります。 DDX の詳細については、「ダイアログ データ エクスチェンジとダイアログ データ検証」を参照してください。

次の例は、ビューとプロパティ シートの 2 つのページの間でデータを交換する方法を示しています。

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);
   }
}

関連項目

プロパティ シート