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