共用方式為


建立元件的屬性頁

通知物件會在網路設定子系統呼叫 notify 物件的 INetCfgComponentPropertyUi::MergePropPages 方法之後建立自訂屬性頁。 您可以使用 MergePropPages 方法,將自訂屬性頁合併到元件屬性工作表的預設頁面集。 MergePropPages 會傳回可合併自訂頁面的適當預設頁面數目。

若要建立自訂屬性頁, MergePropPages 會呼叫 COM CoTaskMemAlloc 函式來配置記憶體給 PROPSHEETPAGE 結構的控制碼。 每個控制碼都代表要建立的屬性頁。 如果 CoTaskMemAlloc 成功配置控制碼的記憶體, MergePropPages 會宣告並填滿每個屬性頁的 PROPSHEETPAGE 結構。 在 MergePropPages填滿這些結構之後,它會針對每個屬性頁呼叫 Win32 CreatePropertySheetPage函式。 在此呼叫中, MergePropPages 會 傳遞要建立之 PROPSHEETPAGE 結構的位址。

也應該針對 MergePropPages 所建立的每個屬性頁實作對話方塊回呼函式。 對話方塊回呼函式會處理作業系統傳送至與該對話方塊函式相關聯之屬性頁的訊息。 若要將屬性頁與對話方塊函式產生關聯, MergePropPages 應該將每個頁面之每個 PROPSHEETPAGE 結構的 pfnDlgProc 成員指向頁面的對話方塊函式。

對話方塊函式會處理下列訊息:

  • WM_INITDIALOG訊息,會在作業系統顯示其相關聯的屬性頁之前,立即傳送至對話方塊函式。 對話方塊函式通常會使用此訊息來初始化屬性頁,並執行影響屬性頁外觀的工作。

  • WM_NOTIFY訊息,此訊息會在屬性頁中發生事件之後傳送至對話方塊函式。 使用此訊息傳送的其他資訊會識別已發生的事件。 此事件資訊包含在 NMHDR 結構的指標中。 NMHDR 可以針對屬性工作表包含的資訊,例如:

    • PSN_APPLY事件,表示使用者在屬性頁面上按一下 [確定]、[關閉] 或 [套用]。 如果使用者按一下 [確定]、[關閉] 或 [套用],對話方塊函式可以呼叫 PropSheet_Changed 宏,通知屬性工作表頁面的資訊已變更。 在此呼叫中,對話方塊函式會將控制碼傳遞給屬性工作表和頁面。 對話方塊函式可以呼叫 Win32 GetParent 函式,並將控制碼傳遞至頁面以擷取屬性工作表的控制碼。

      在對話方塊函式通知屬性工作表有關變更之後,網路設定子系統會呼叫 INetCfgComponentPropertyUi::ValidateProperties 方法來檢查所有變更的有效性。 如果所有變更都有效,子系統會呼叫 notify 物件的 INetCfgComponentPropertyUi::ApplyProperties 方法,讓所有變更生效。 網路設定子系統會在作業系統關閉對話方塊之前呼叫 ApplyProperties

      ApplyProperties方法可以實作,以擷取使用者輸入的資訊,並將資訊設定為通知物件的資料成員。

    • PSN_RESET事件,表示作業系統即將終結屬性頁。 使用者可以按一下屬性頁上的 [取消] 來起始此動作。 如果使用者按一下 [取消],網路設定子系統會呼叫 INetCfgComponentPropertyUi::CancelProperties 方法,以忽略所有變更。 網路設定子系統會在關閉對話方塊之前呼叫 CancelProperties

    • PSN_KILLACTIVE事件,表示屬性頁即將變成非使用中。 當使用者啟動另一個頁面或按一下 [確定] 時,就會發生此事件。

您也可以針對MergePropPages所建立的每個屬性頁實作屬性回呼函式。 屬性頁回呼函式會執行頁面的初始化和清除作業。 若要將屬性頁與屬性頁回呼函式產生關聯, MergePropPages 應該將每個頁面之每個 PROPSHEETPAGE 結構的 pfnCallback 成員指向該頁面的屬性頁回呼函式。

如需詳細資訊,請參閱Microsoft Windows SDK檔

  • 建立屬性頁和結構、函式和屬性頁的通知

  • 對話方塊回呼程式、訊息和結構