通知物件會在網路設定子系統呼叫 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 方法可以實作,以擷取使用者輸入的資訊,並將資訊設定為 notify 對象的數據成員。
PSN_RESET 事件,表示作業系統即將銷毀屬性頁。 用戶可以按下屬性頁上的 [取消] 來起始此動作。 如果使用者按兩下 [取消],網络設定子系統會呼叫 INetCfgComponentPropertyUi::CancelProperties 方法,以忽略所有變更。 網路設定子系統會在關閉對話方塊之前呼叫 CancelProperties。
PSN_KILLACTIVE事件,表示屬性頁即將變成非使用中狀態。 當用戶啟動另一個頁面或按兩下 [確定] 時,就會發生此事件。
您也可以針對由 MergePropPages 所建立的每個屬性頁實作 屬性頁回呼 函式。 屬性頁回呼函式會執行頁面的初始化和清除作業。 若要將屬性頁與屬性頁回呼函式產生關聯,MergePropPages 應該將每個頁面的每個 PROPSHEETPAGE 結構中的 pfnCallback 成員指向該頁面的屬性頁回呼函式。
如需詳細資訊,請參閱 Microsoft Windows SDK 檔:
建立屬性頁、結構體,以及與屬性頁相關的函式和通知。
對話框回呼程式、訊息和結構