共用方式為


建立非強制回應屬性工作表

一般而言,您建立的屬性工作表將會是強制回應。 使用強制回應屬性工作表時,使用者必須先關閉屬性工作表,才能使用應用程式的任何其他部分。 本文說明可用來建立無模式屬性工作表的方法,可讓使用者在使用應用程式的其他部分時保持屬性工作表開啟。

若要將屬性工作表顯示為無強制回應對話方塊,而不是強制回應對話方塊,請呼叫 CPropertySheet::Create ,而不是 DoModal 。 您也必須實作一些額外的工作,以支援無模式屬性工作表。

其中一項額外工作是在屬性工作表與屬性工作表開啟時修改的外部物件之間交換資料。 這通常與標準無強制回應對話方塊的工作相同。 這項工作的一部分是實作無模式屬性工作表與套用屬性設定的外部物件之間的通訊通道。 如果您從 CPropertySheet 衍生無模式屬性工作表 的類別,此實作會更加容易。 本文假設您已這麼做。

在無模式屬性工作表與外部物件之間通訊的其中一種方法(例如,檢視中的目前選取範圍)是定義從屬性工作表到外部物件的指標。 在衍生類別中 CPropertySheet 定義函式(稱為類似 SetMyExternalObject ),每當焦點從某個外部物件變更為另一個物件時,就會變更指標。 函 SetMyExternalObject 式必須重設每個屬性頁的設定,以反映新選取的外部物件。 若要達成此目的,函 SetMyExternalObject 式必須能夠存取屬於 類別的 CPropertySheet CPropertyPage 物件。

提供屬性工作表內屬性頁存取權的最便利方式,是將物件內嵌 CPropertyPage 在衍生物件中 CPropertySheetCPropertyPage在衍生物件中 CPropertySheet 内嵌物件與強制回應對話方塊的典型設計不同,其中屬性工作表的擁有者會建立 CPropertyPage 物件,並透過 CPropertySheet::AddPage 將它們傳遞至屬性工作表。

有許多使用者介面替代方案可用來判斷何時應該將無模式屬性工作表的設定套用至外部物件。 其中一個替代方法是每當使用者變更任何值時,套用目前屬性頁的設定。 另一個替代方法是提供 [套用] 按鈕,讓使用者在將變更認可至外部物件之前,先累積屬性頁中的變更。 如需處理 [套用] 按鈕方式的相關資訊,請參閱處理套用按鈕 一文

另請參閱

屬性工作表
交換資料
在 MFC 中使用對話方塊