プロパティ シートには、標準のダイアログ ボックスにはない機能があります。これにより、ユーザーはプロパティ シートを閉じる前に行った変更を適用できます。 これを行うには、[適用] ボタンを使用します。 この記事では、この機能を適切に実装するために使用できるメソッドについて説明します。
モーダル ダイアログ ボックスは、通常、ユーザーが [OK] をクリックしてダイアログ ボックスを閉じるときに、外部オブジェクトに設定を適用します。 プロパティ シートについても同様です。ユーザーが [OK] をクリックすると、プロパティ シートの新しい設定が有効になります。
ただし、プロパティ シートのダイアログ ボックスを閉じることなく、ユーザーが設定を保存できるようにしたい場合があります。 これは、[適用] ボタンの機能です。 [適用] ボタンは、現在アクティブなページの現在の設定のみを適用するのではなく、すべてのプロパティ ページの現在の設定を外部オブジェクトに適用します。
既定では、[適用] ボタンは常に無効になっています。 適切な時刻に [適用] ボタンを有効にするコードを記述し、次に説明するように Apply の効果を実装するコードを記述する必要があります。
ユーザーに [適用] 機能を提供しない場合は、[適用] ボタンを削除する必要はありません。 今後のバージョンの Windows で利用可能な標準プロパティ シートのサポートを使用するアプリケーションの間で一般的に行われるように、無効のままにしておくことができます。
ページが変更されていることを報告し、[適用] ボタンを有効にするには、 CPropertyPage::SetModified( TRUE )
を呼び出します。 変更中のページ レポートがある場合、現在アクティブなページが変更されているかどうかに関係なく、[適用] ボタンは有効なままになります。
ユーザーがページ内の設定を変更するたびに 、CPropertyPage::SetModified を呼び出す必要があります。 ユーザーがページの設定をいつ変更するかを検出する 1 つの方法は、プロパティ ページ内の各コントロール ( EN_CHANGE やBN_CLICKEDなど) に対して変更通知ハンドラーを実装 することです。
[適用] ボタンの効果を実装するには、プロパティ シートの所有者またはアプリケーション内の他の外部オブジェクトに、プロパティ ページの現在の設定を適用するように指示する必要があります。 同時に、プロパティ シートは、外部オブジェクトに変更を適用したすべてのページの CPropertyPage::SetModified( FALSE )
を呼び出すことによって、[適用] ボタンを無効にする必要があります。
このプロセスの例については、MFC General サンプル PROPDLG を参照してください。
こちらも参照ください
プロパティ シート を する