次の方法で共有


コンポーネントのプロパティ ページの作成

通知オブジェクトは、ネットワーク構成サブシステムが通知オブジェクト の INetCfgComponentPropertyUi::MergePropPages メソッドを呼び出した後に、カスタム プロパティ ページを作成します。 MergePropPages メソッドを使用すると、カスタム プロパティ ページをコンポーネントのプロパティ シートの既定のページ セットにマージできます。 MergePropPages は、カスタム ページをマージできる既定のページの適切な数を返します。

カスタム プロパティ ページを作成するために、MergePropPages は COM CoTaskMemAlloc 関数を呼び出して、PROPSH Enterprise Edition TPAGE 構造体にハンドルのメモリを割り当てます。 これらの各ハンドルは、作成するプロパティ ページを表します。 CoTaskMemAlloc がハンドルのメモリを正常に割り当てた場合、MergePropPages はプロパティ ページごとに PROPSHEETPAGE 構造体を宣言して埋めます。 MergePropPages は、これらの構造体を塗りつぶした後、各プロパティ ページの Win32 CreatePropertySheetPage 関数を呼び出します。 この呼び出しでは、MergePropPages は作成する PROPSH Enterprise Edition TPAGE 構造体のアドレスを渡します。

MergePropPages によって作成されるプロパティ ページごとに、ダイアログ ボックスコールバック関数も実装する必要があります。 ダイアログ ボックス コールバック関数は、オペレーティング システムがそのダイアログ ボックス関数に関連付けられているプロパティ ページに送信するメッセージを処理します。 プロパティ ページをダイアログ ボックス関数に関連付けるには、MergePropPages は、各ページの各 PROPSH Enterprise Edition TPAGE 構造体の pfnDlgProc メンバーをページのダイアログ ボックス関数にポイントする必要があります。

ダイアログ ボックス関数は、次のメッセージを処理します。

  • オペレーティング システムに関連付けられているプロパティ ページを表示する直前にダイアログ ボックス関数に送信されるWM_INITDIALOG メッセージ。 ダイアログ ボックス関数は、通常、このメッセージを使用してプロパティ ページを初期化し、プロパティ ページの外観に影響を与えるタスクを実行します。

  • プロパティ ページでイベントが発生した後にダイアログ ボックス関数に送信されるWM_NOTIFY メッセージ。 このメッセージと共に送信されるその他の情報は、どのイベントが発生したかを識別します。 このイベント情報は、NMHDR 構造体へのポインターに含まれています。 NMHDR がプロパティ シートに含めることができる情報には、次のようなものがあります。

    • PSN_APPLY イベントは、ユーザーがプロパティ ページで [OK]、[閉じる]、または [適用] をクリックしたことを示します。 ユーザーが [OK]、[閉じる]、または [適用] をクリックすると、ダイアログ ボックス関数は PropSheet_Changed マクロを呼び出して、ページ内の情報が変更されたことをプロパティ シートに通知できます。 この呼び出しでは、ダイアログ ボックス関数はプロパティ シートとページにハンドルを渡します。 ダイアログ ボックス関数は、Win32 GetParent 関数を呼び出し、ページにハンドルを渡してプロパティ シートのハンドルを取得できます。

      ダイアログ ボックス関数がプロパティ シートに変更を通知した後、ネットワーク構成サブシステムは INetCfgComponentPropertyUi::ValidateProperties メソッドを呼び出して、すべての変更の有効性をチェックします。 すべての変更が有効な場合、サブシステムは通知オブジェクトの INetCfgComponentPropertyUi::ApplyProperties メソッドを呼び出して、すべての変更を有効にします。 ネットワーク構成サブシステムは、オペレーティング システムがダイアログ ボックスを閉じる前に ApplyProperties を呼び出します。

      ApplyProperties メソッドは、ユーザーが入力した情報を取得し、通知オブジェクトのデータ メンバーに情報を設定するために実装できます。

    • オペレーティング システムがプロパティ ページを破棄しようとしていることを示す PSN_RESET イベント。 ユーザーは、プロパティ ページの [キャンセル] をクリックして、このアクションを開始できます。 ユーザーが [キャンセル] をクリックすると、ネットワーク構成サブシステムは INetCfgComponentPropertyUi::CancelProperties メソッドを呼び出して、すべての変更が無視されます。 ネットワーク構成サブシステムは、ダイアログ ボックスを閉じる前に CancelProperties を呼び出します。

    • プロパティ ページが非アクティブになろうとしていることを示す PSN_KILLACTIVE イベント。 このイベントは、ユーザーが別のページをアクティブにするか、OK をクリックしたときに発生します。

プロパティ ページコールバック関数は、MergePropPages によって作成されるプロパティ ページごとに実装することもできます。 プロパティ ページのコールバック関数は、ページの初期化操作とクリーンアップ操作を実行します。 プロパティ ページをプロパティ ページコールバック関数に関連付けるには、MergePropPages は各ページの各 PROPSH Enterprise Edition TPAGE 構造体の pfnCallback メンバーをそのページのプロパティ ページ コールバック関数にポイントする必要があります。

詳細については、 Microsoft Windows SDK のドキュメント を参照してください。

  • プロパティ ページのプロパティ ページと構造体、関数、および通知の作成

  • ダイアログ ボックスのコールバック プロシージャ、メッセージ、および構造体