Creare una finestra delle proprietà non modale
In genere, le finestre delle proprietà creati verranno modali.In utilizzando una finestra delle proprietà modale, è necessario chiudere la finestra delle proprietà prima di qualsiasi altra parte dell'applicazione.Questo articolo descrive i metodi è possibile utilizzare per creare una finestra delle proprietà non modale che consente all'utente lo mantiene la finestra delle proprietà aperta quando si utilizza altre parti dell'applicazione.
Per visualizzare una finestra delle proprietà come finestra di dialogo non modale anziché come finestra di dialogo modale, chiamata CPropertySheet::Create anziché DoModal.È necessario implementare anche alcune attività aggiuntive supportare una finestra delle proprietà non modale.
Una delle attività aggiuntive è lo scambio di dati tra la finestra delle proprietà e l'oggetto che esterno viene modificato quando la finestra delle proprietà è aperta.Questo rappresenta in genere la stessa attività di per le finestre di dialogo non modale standard.La parte di questa attività si sta distribuendo un canale di comunicazione tra la finestra delle proprietà non modale e l'oggetto esterno alle impostazioni delle proprietà vengono applicate.Questa implementazione è molto più semplice se si deriva una classe da CPropertySheet per la finestra delle proprietà non modale.In questo articolo presuppone ha ancora provveduto.
Un metodo per la comunicazione tra la finestra delle proprietà non modale e l'oggetto esterno (la selezione corrente di una visualizzazione, ad esempio è possibile definire un puntatore dalla finestra delle proprietà l'oggetto esterno.Definire una funzione denominata chostforwinform simile a SetMyExternalObject) in CPropertySheetclasse derivata da per modificare il puntatore ogni modifica dello stato attivo da un oggetto esterno a un altro.Le necessità di funzione di SetMyExternalObject di reimpostare le impostazioni per ciascuna pagina delle proprietà riflettano l'oggetto esterno appena selezionato.A tale scopo, la funzione di SetMyExternalObject possa accedere agli oggetti di CPropertyPage appartenenti alla classe di CPropertySheet .
Il modo più pratico per fornire l'accesso alle pagine delle proprietà all'interno di una finestra delle proprietà è di importare oggetti in CPropertySheetoggetto derivato da di CPropertyPage .Incorporando CPropertyPage oggetti in CPropertySheetoggetto derivato da differisce dalla progettazione tipica per le finestre di dialogo modale, in cui il proprietario della finestra delle proprietà vengono creati oggetti di CPropertyPage e li passa alla finestra delle proprietà mediante CPropertySheet::AddPage.
Esistono molti metodi alternativi dell'interfaccia utente per determinare quando le impostazioni della finestra delle proprietà non modale devono essere applicata a un oggetto esterno.In alternativa consiste nell'applicare le impostazioni della pagina delle proprietà corrente ogni volta che l'utente modifica il valore.Un'altra alternativa consiste nella creazione di un pulsante di applicare, che consente all'utente accumuli le modifiche nelle pagine delle proprietà prima di eseguire il commit dell'oggetto esterno.Per informazioni sulle modalità per gestire il pulsante di applicare, vedere l'articolo gestire il pulsante di applicare.