Créer une feuille de propriétés non modale
Normalement, les feuilles de propriétés que vous créez se modales.Lorsque vous utilisez une feuille de propriétés modale, l'utilisateur doit fermer la feuille de propriétés avant d'utiliser toute autre partie de l'application.Cet article décrit les méthodes que vous pouvez utiliser pour créer une feuille de propriétés non modale qui permet à l'utilisateur de maintenir la feuille de propriétés ouverte lorsque vous utilisez d'autres parties de l'application.
Pour afficher une feuille de propriétés en tant que boîte de dialogue non modale et non comme une boîte de dialogue modale, appelez CPropertySheet::Create au lieu de DoModal.Vous devez également implémenter des tâches supplémentaires pour prendre en charge une feuille de propriétés non modale.
L'une des tâches supplémentaires échange de données entre la feuille de propriétés et l'objet externe qu'elle modifie lorsque la feuille de propriétés est ouverte.Il s'agit généralement de la même tâche que pour les boîtes de dialogue non modale standard.Une partie de cette tâche implémente un canal de communication entre la feuille de propriétés non modale et l'objet externe aux paramètres de propriété s'appliquent.Cette implémentation est beaucoup plus facile si vous dérivez une classe de CPropertySheet pour votre feuille de propriétés non modale.Cet article suppose que vous avez fait.
Une méthode pour communiquer entre la feuille de propriétés non modale et l'objet externe (la sélection actuelle dans une vue, par exemple) est de définir un pointeur de la feuille de propriétés à l'objet externe.Définissez une fonction (appelée présenter comme SetMyExternalObject) dans CPropertySheetclasse dérivée pour modifier le pointeur lorsque le focus est modifié d'un objet externe à un autre.La fonction d' SetMyExternalObject doit réinitialiser les paramètres pour chaque page de propriétés reflète l'objet externe récemment sélectionné.Pour ce faire, la fonction d' SetMyExternalObject doit être en mesure d'accéder aux objets de CPropertyPage appartenant à la classe d' CPropertySheet .
La plupart de moyen pratique de fournir l'accès aux pages de propriétés dans une feuille de propriétés est d'incorporer les objets d' CPropertyPage dans CPropertySheetobjet dérivé.Objets d' CPropertyPage d'incorporer dans CPropertySheet- l'objet dérivé diffère de la conception classique pour les boîtes de dialogue modales, où le propriétaire de la feuille de propriétés crée les objets d' CPropertyPage et les passe à la feuille de propriétés via CPropertySheet::AddPage.
Il existe de nombreuses possibilités d'interface utilisateur pour déterminer si les paramètres de la feuille de propriétés non modale doivent être appliqués à un objet externe.Une autre solution consiste à appliquer les paramètres de la page de propriétés actuelle lorsque l'utilisateur modifie une valeur.Une autre solution consiste à ajouter un bouton de l'application, qui permet à l'utilisateur pour accumuler les modifications dans les pages de propriétés avant de les valider à l'objet externe.Pour plus d'informations sur les manières de gérer le bouton d'appliquer, consultez l'article Gérer le bouton de l'application.