Vytvoření nemodálního seznamu vlastností
Za normálních okolností bude vlastností, které můžete vytvořit modální.Při použití modálních vlastností, musí uživatel zavřete list vlastností před použitím části aplikace.Tento článek popisuje metody, které můžete použít k vytvoření nemodální vlastností, který umožňuje uživateli ponechat otevřené okno vlastností při použití jiných částí aplikace.
Chcete-li zobrazit seznam vlastností jako nemodální dialogové okno namísto jako modální dialogové okno, volání CPropertySheet::Create místo DoModal.Musíte také implementovat některé další úkoly pro podporu nemodální vlastností.
Jedním z dalších úkolů je výměna dat mezi seznam vlastností a externí objekt, který provádí změny, pokud je otevřeno okno vlastností.To je obecně stejný úkol jako standardní nemodální dialogová okna.Součástí tohoto úkolu je implementace kanálu komunikace mezi nemodální vlastností a externího objektu, na které se vztahují nastavení vlastností.Tato implementace je mnohem jednodušší, pokud odvození třídy z CPropertySheet pro vaše nemodální vlastností.Tento článek předpokládá, že jste tak učinili.
Jeden způsob pro komunikaci mezi nemodální vlastností a externích je definovat ukazatel vnější objekt ze seznamu vlastností objektu (v aktuálním výběru zobrazení, například).Definice funkce (jen něco jako SetMyExternalObject) v CPropertySheet-odvozené třídy změnit ukazatel při změně fokusu z jednoho externího objektu na jiný.SetMyExternalObject Funkce je třeba obnovit nastavení pro každou stránku vlastností tak, aby odrážely nově vybraného externího objektu.K tomu, SetMyExternalObject funkce musí mít přístup CPropertyPage objekty, které patří do CPropertySheet třídy.
Nejvhodnějším způsobem pro poskytnutí přístupu k vlastnosti v seznamu vlastností, je vložit CPropertyPage objekty v CPropertySheet-odvozené objekt.Vložení CPropertyPage objekty v CPropertySheet-odvozené objektu se liší od typických design pro modální dialogová okna, pokud vlastník seznamu vlastností vytvoří CPropertyPage objekty a předá je do seznamu vlastností prostřednictvím CPropertySheet::AddPage.
Existuje mnoho alternativ uživatelského rozhraní pro určení, kdy by nastavení nemodální vlastností použít externí objekt.Jedna alternativa je použít nastavení vlastnosti aktuální stránky vždy, když uživatel změní všechny hodnoty.Další možností je použít tlačítko, které umožňuje uživateli hromadí změny na stránkách vlastností před jejich začleněním do externího objektu.Informace o způsobech zpracování na tlačítko použít, naleznete v článku zpracování tlačítka použít.