次の方法で共有


データの交換

ほとんどのダイアログ ボックスと同様に、プロパティ シートとアプリケーション間でのデータの交換は、プロパティ シートの最も重要な関数の 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);
   }
}

参照

概念

プロパティ シート (MFC)