Classe CPropertySheet
Rappresenta le finestre delle proprietà, note anche come finestre di dialogo a schede.
Sintassi
class CPropertySheet : public CWnd
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CPropertySheet::CPropertySheet |
Costruisce un oggetto CPropertySheet . |
Metodi pubblici
Nome | Descrizione |
---|---|
CPropertySheet::AddPage |
Aggiunge una pagina alla finestra delle proprietà. |
CPropertySheet::Construct |
Costruisce un oggetto CPropertySheet . |
CPropertySheet::Create |
Visualizza una finestra delle proprietà senza modalità. |
CPropertySheet::DoModal |
Visualizza una finestra delle proprietà modale. |
CPropertySheet::EnableStackedTabs |
Indica se la finestra delle proprietà utilizza schede sovrapposte o scorrevoli. |
CPropertySheet::EndDialog |
Termina la finestra delle proprietà. |
CPropertySheet::GetActiveIndex |
Recupera l'indice della pagina attiva della finestra delle proprietà. |
CPropertySheet::GetActivePage |
Restituisce l'oggetto pagina attivo. |
CPropertySheet::GetPage |
Recupera un puntatore alla pagina specificata. |
CPropertySheet::GetPageCount |
Recupera il numero di pagine nella finestra delle proprietà. |
CPropertySheet::GetPageIndex |
Recupera l'indice della pagina specificata della finestra delle proprietà. |
CPropertySheet::GetTabControl |
Recupera un puntatore a un controllo struttura a schede. |
CPropertySheet::MapDialogRect |
Converte le unità di finestra di dialogo di un rettangolo in unità schermo. |
CPropertySheet::OnInitDialog |
Eseguire l'override per aumentare l'inizializzazione della finestra delle proprietà. |
CPropertySheet::PressButton |
Simula la scelta del pulsante specificato in una finestra delle proprietà. |
CPropertySheet::RemovePage |
Rimuove una pagina dalla finestra delle proprietà. |
CPropertySheet::SetActivePage |
Imposta a livello di codice l'oggetto pagina attivo. |
CPropertySheet::SetFinishText |
Imposta il testo per il pulsante Fine. |
CPropertySheet::SetTitle |
Imposta la didascalia della finestra delle proprietà. |
CPropertySheet::SetWizardButtons |
Abilita i pulsanti della procedura guidata. |
CPropertySheet::SetWizardMode |
Abilita la modalità procedura guidata. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CPropertySheet::m_psh |
Struttura di Windows PROPSHEETHEADER . Fornisce l'accesso ai parametri della finestra delle proprietà di base. |
Osservazioni:
Una finestra delle proprietà è costituita da un CPropertySheet
oggetto e uno o più CPropertyPage
oggetti. Il framework visualizza una finestra delle proprietà come finestra con un set di indici di tabulazione e un'area che contiene la pagina attualmente selezionata. L'utente passa a una pagina specifica usando la scheda appropriata.
CPropertySheet
fornisce supporto per la struttura espansa PROPSHEETHEADER
introdotta in Windows 98 e Windows NT 2000. La struttura contiene flag e membri aggiuntivi che supportano l'uso di una bitmap di sfondo "filigrana".
Per visualizzare automaticamente queste nuove immagini nell'oggetto finestra delle proprietà, passare valori validi per le immagini bitmap e tavolozza nella chiamata a CPropertySheet::Construct
o CPropertySheet::CPropertySheet
.
Anche se CPropertySheet
non è derivato da CDialog
, la gestione di un CPropertySheet
oggetto è simile alla gestione di un CDialog
oggetto . Ad esempio, la creazione di una finestra delle proprietà richiede la costruzione in due parti: chiamare il costruttore e quindi chiamare DoModal
una finestra delle proprietà modale o Create
per una finestra delle proprietà modeless. CPropertySheet
ha due tipi di costruttori: CPropertySheet::Construct
e CPropertySheet::CPropertySheet
.
Quando si costruisce un CPropertySheet
oggetto, è possibile che si verifichi un'eccezione first-chance. Questo risultato dal sistema tenta di modificare lo stile della finestra delle proprietà prima della creazione del foglio. Per evitare questa eccezione, assicurarsi di impostare gli stili seguenti quando si crea CPropertySheet
:
DS_3DLOOK
DS_CONTROL
WS_CHILD
WS_TABSTOP
Gli stili seguenti sono facoltativi e non causeranno l'eccezione first-chance:
DS_SHELLFONT
DS_LOCALEDIT
WS_CLIPCHILDREN
Qualsiasi altro Window Styles
non è consentito e non è consigliabile abilitarli.
Lo scambio di dati tra un CPropertySheet
oggetto e un oggetto esterno è simile allo scambio di dati con un CDialog
oggetto . La differenza importante è che le impostazioni di una finestra delle proprietà sono in genere variabili membro degli CPropertyPage
oggetti anziché dell'oggetto CPropertySheet
stesso.
È possibile creare un tipo di finestra di dialogo di tabulazione denominata procedura guidata, costituita da una finestra delle proprietà con una sequenza di pagine delle proprietà che guidano l'utente nei passaggi di un'operazione, ad esempio la configurazione di un dispositivo o la creazione di una newsletter. In una finestra di dialogo di tipo procedura guidata le pagine delle proprietà non hanno schede e una sola pagina delle proprietà è visibile alla volta. Inoltre, invece di avere i pulsanti OK e Applica ora, una finestra di dialogo di tipo procedura guidata include un pulsante Indietro, un pulsante Avanti o Fine, un pulsante Annulla e un pulsante ? .
Per creare una finestra di dialogo di tipo procedura guidata, seguire la stessa procedura da seguire per creare una finestra delle proprietà standard, ma chiamare prima di chiamare SetWizardMode
DoModal
. Per abilitare i pulsanti della procedura guidata, chiamare SetWizardButtons
, usando i flag per personalizzare la funzione e l'aspetto. Per abilitare il pulsante Fine , chiamare SetFinishText
dopo che l'utente ha eseguito un'azione nell'ultima pagina della procedura guidata.
Per altre informazioni su come usare CPropertySheet
gli oggetti, vedere l'articolo Finestre delle proprietà e Pagine delle proprietà.
Gerarchia di ereditarietà
CPropertySheet
Requisiti
Intestazione: afxdlgs.h
CPropertySheet::AddPage
Aggiunge la pagina fornita con la scheda più a destra nella finestra delle proprietà.
void AddPage(CPropertyPage* pPage);
Parametri
pPage
Punta alla pagina da aggiungere alla finestra delle proprietà. Non può essere NULL
.
Osservazioni:
Aggiungere pagine alla finestra delle proprietà nell'ordine da sinistra a destra da visualizzare.
AddPage
aggiunge l'oggetto CPropertyPage
all'elenco CPropertySheet
di pagine dell'oggetto, ma non crea effettivamente la finestra per la pagina. Il framework posticipa la creazione della finestra per la pagina fino a quando l'utente non seleziona tale pagina.
Quando si aggiunge una pagina delle proprietà utilizzando AddPage
, CPropertySheet
è l'elemento padre dell'oggetto CPropertyPage
. Per accedere alla finestra delle proprietà dalla pagina delle proprietà, chiamare CWnd::GetParent
.
Non è necessario attendere la creazione della finestra della finestra della finestra delle proprietà per chiamare AddPage
. In genere, si chiamerà prima di chiamare AddPage
DoModal
o Create
.
Se si chiama AddPage
dopo aver visualizzato la pagina delle proprietà, la riga della scheda rifletterà la pagina appena aggiunta.
Esempio
// Add three pages to a CPropertySheet object, then show the
// CPropertySheet object as a modal dialog. CStylePage, CShapePage,
// and CColorPage are CPropertyPage-derived classes created
// by the Add Class wizard.
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
dlgPropertySheet.DoModal();
CPropertySheet::Construct
Costruisce un oggetto CPropertySheet
.
void Construct(
UINT nIDCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
void Construct(
LPCTSTR pszCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
void Construct(
UINT nIDCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
void Construct(
LPCTSTR pszCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
Parametri
nIDCaption
ID della didascalia da utilizzare per la finestra delle proprietà.
pParentWnd
Puntatore alla finestra padre della finestra delle proprietà. Se NULL
, la finestra padre sarà la finestra principale dell'applicazione.
iSelectPage
Indice della pagina che inizialmente sarà in cima. Il valore predefinito è la prima pagina aggiunta al foglio.
pszCaption
Puntatore a una stringa contenente la didascalia da utilizzare per la finestra delle proprietà. Non può essere NULL
.
hbmWatermark
Handle per la bitmap della filigrana della pagina delle proprietà.
hpalWatermark
Handle per la tavolozza della bitmap della filigrana e/o della bitmap dell'intestazione.
hbmHeader
Handle per la bitmap di intestazione della pagina delle proprietà.
Osservazioni:
Chiamare questa funzione membro se uno dei costruttori di classe non è già stato chiamato. Ad esempio, chiamare Construct
quando si dichiarano o allocano matrici di CPropertySheet
oggetti. Nel caso di matrici, è necessario chiamare Construct
per ogni membro nella matrice.
Per visualizzare la finestra delle proprietà, chiamare DoModal
o Create
. La stringa contenuta nel primo parametro verrà inserita nella barra della didascalia per la finestra delle proprietà.
È possibile visualizzare automaticamente le immagini di filigrana e/o intestazione se si usano i prototipi di Construct
, elencati in precedenza, e si passano valori validi per i hbmWatermark
parametri , hpalWatermark
e/o hbmHeader
.
Esempio
Nell'esempio seguente viene illustrato in quali circostanze si chiamerebbe Construct
.
const int c_cSheets = 3;
CPropertySheet grpropsheet[c_cSheets];
// no need to call Construct for this next one
CPropertySheet someSheet(_T("Some sheet"));
LPTSTR rgszSheets[c_cSheets] = {
_T("Sheet 1"),
_T("Sheet 2"),
_T("Sheet 3")
};
for (int i = 0; i < c_cSheets; i++)
grpropsheet[i].Construct(rgszSheets[i]);
CPropertySheet::CPropertySheet
Costruisce un oggetto CPropertySheet
.
CPropertySheet();
explicit CPropertySheet(
UINT nIDCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
explicit CPropertySheet(
LPCTSTR pszCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
CPropertySheet(
UINT nIDCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
CPropertySheet(
LPCTSTR pszCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
Parametri
nIDCaption
ID della didascalia da utilizzare per la finestra delle proprietà.
pParentWnd
Punta alla finestra padre della finestra delle proprietà. Se NULL
, la finestra padre sarà la finestra principale dell'applicazione.
iSelectPage
Indice della pagina che inizialmente sarà in cima. Il valore predefinito è la prima pagina aggiunta al foglio.
pszCaption
Punta a una stringa contenente la didascalia da utilizzare per la finestra delle proprietà. Non può essere NULL
.
hbmWatermark
Handle per la bitmap di sfondo della finestra delle proprietà.
hpalWatermark
Handle per la tavolozza della bitmap della filigrana e/o della bitmap dell'intestazione.
hbmHeader
Handle per la bitmap di intestazione della pagina delle proprietà.
Osservazioni:
Per visualizzare la finestra delle proprietà, chiamare DoModal
o Create
. La stringa contenuta nel primo parametro verrà inserita nella barra della didascalia per la finestra delle proprietà.
Se sono presenti più parametri, ad esempio se si usa una matrice, usare Construct
anziché CPropertySheet
.
È possibile visualizzare automaticamente le immagini di filigrana e/o intestazione se si usano i terzi o i quarto prototipi di CPropertySheet
, sopra e si passano valori validi per i hbmWatermark
parametri , hpalWatermark
e/o hbmHeader
.
Esempio
// Declare a CPropertySheet object titled "Simple PropertySheet".
CPropertySheet dlgPropertySheet1(_T("Simple PropertySheet"));
// Declare a CPropertySheet object whose title is specified in the
// IDS_PROPERTYSHEET_TITLE string resource, and the second page is
// initially on top.
CPropertySheet dlgPropertySheet2(IDS_PROPERTYSHEET_TITLE, this, 1);
CPropertySheet::Create
Visualizza una finestra delle proprietà senza modalità.
virtual BOOL Create(CWnd* pParentWnd = NULL,
DWORD dwStyle = (DWORD)-1,
DWORD dwExStyle = 0);
Parametri
pParentWnd
Punta alla finestra padre. Se NULL
, l'elemento padre è il desktop.
dwStyle
Stili di finestra per la finestra delle proprietà. Per un elenco completo degli stili disponibili, vedere Stili finestra.
dwExStyle
Stili di finestra estesa per la finestra delle proprietà. Per un elenco completo degli stili disponibili, vedere Stili finestra estesi
Valore restituito
Diverso da zero se la finestra delle proprietà viene creata correttamente; in caso contrario, 0.
Osservazioni:
La chiamata a Create
può trovarsi all'interno del costruttore oppure è possibile chiamarla dopo che il costruttore viene richiamato.
Lo stile predefinito, espresso passando -1 come dwStyle
, è effettivamente WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLE
. Lo stile predefinito della finestra estesa, espresso passando 0 come dwExStyle
, è effettivamente WS_EX_DLGMODALFRAME
.
La Create
funzione membro viene restituita immediatamente dopo la creazione della finestra delle proprietà. Per eliminare definitivamente la finestra delle proprietà, chiamare CWnd::DestroyWindow
.
Le finestre delle proprietà modeless visualizzate con una chiamata a Create
non dispongono di pulsanti OK, Annulla, Applica ora e Guida come finestre delle proprietà modali. I pulsanti desiderati devono essere creati dall'utente.
Per visualizzare una finestra delle proprietà modale, chiamare DoModal
invece .
Esempio
// This code fragment shows how to create a modeless property sheet
// dialog in a command message handler (OnModelessPropertySheet())
// of a CView-derived class.
void CPSheetView::OnModelessPropertySheet()
{
// Declare a CPropertySheet object. m_pdlgPropertySheet is a data
// member of type CPropertySheet in CView-derived class.
m_pdlgPropertySheet = new CPropertySheet(_T("Simple PropertySheet"));
ASSERT(m_pdlgPropertySheet);
// Add three pages to the CPropertySheet object. Both m_pstylePage,
// m_pcolorPage, and m_pshapePage are data members of type
// CPropertyPage-derived classes in CView-derived class.
m_pstylePage = new CStylePage;
m_pcolorPage = new CColorPage;
m_pshapePage = new CShapePage;
m_pdlgPropertySheet->AddPage(m_pstylePage);
m_pdlgPropertySheet->AddPage(m_pcolorPage);
m_pdlgPropertySheet->AddPage(m_pshapePage);
// Create a modeless CPropertySheet dialog.
m_pdlgPropertySheet->Create();
}
// The code fragment below shows how to destroy the C++ objects for
// propertysheet and propertypage in the destructor of CView-derived
// class.
// NOTE: DestroyWindow() is called in CPropertySheet::OnClose() so
// you do not need to call it here. Property pages are children
// of the CPropertySheet, they will be destroyed by their parents.
CPSheetView::~CPSheetView()
{
delete m_pshapePage;
delete m_pstylePage;
delete m_pcolorPage;
delete m_pdlgPropertySheet;
}
CPropertySheet::DoModal
Visualizza una finestra delle proprietà modale.
virtual INT_PTR DoModal();
Valore restituito
IDOK
o IDCANCEL
se la funzione ha esito positivo; in caso contrario, 0 o -1. Se la finestra delle proprietà è stata stabilita come procedura guidata (vedere SetWizardMode
), DoModal
restituisce ID_WIZFINISH
o IDCANCEL
.
Osservazioni:
Il valore restituito corrisponde all'ID del controllo che ha chiuso la finestra delle proprietà. Al termine di questa funzione, le finestre corrispondenti alla finestra delle proprietà e tutte le pagine saranno state eliminate definitivamente. Gli oggetti stessi continueranno a esistere. In genere, si recupereranno i dati dagli CPropertyPage
oggetti dopo DoModal
aver restituito IDOK.
Per visualizzare una finestra delle proprietà senza modalità, chiamare Create
invece .
Quando una pagina delle proprietà viene creata dalla risorsa della finestra di dialogo corrispondente, può causare un'eccezione first-chance. Questo risultato dalla pagina delle proprietà modifica lo stile della risorsa della finestra di dialogo con lo stile richiesto prima della creazione della pagina. Poiché le risorse sono in genere di sola lettura, viene generata un'eccezione. Il sistema gestisce l'eccezione e crea una copia della risorsa modificata. L'eccezione first-chance può quindi essere ignorata.
Nota
Questa eccezione deve essere gestita dal sistema operativo se si esegue la compilazione con il modello di gestione asincrona delle eccezioni. Per altre informazioni sui modelli di gestione delle eccezioni, vedere /EH
(Modello di gestione delle eccezioni). In questo caso, non eseguire il wrapping delle chiamate a CPropertySheet::DoModal
con un blocco try-catch C++ in cui il catch gestisce tutte le eccezioni, catch (...)
ad esempio . Questo blocco gestirà l'eccezione destinata al sistema operativo e provocherebbe un comportamento imprevedibile. Tuttavia, è possibile usare in modo sicuro la gestione delle eccezioni C++ con tipi di eccezione specifici o la gestione strutturata delle eccezioni in cui l'eccezione violazione di accesso viene passata al sistema operativo.
Per evitare di generare questa eccezione first-chance, è possibile garantire manualmente che la finestra delle proprietà abbia gli stili di finestra corretti. È necessario impostare gli stili seguenti per una finestra delle proprietà:
DS_3DLOOK
DS_CONTROL
WS_CHILD
WS_TABSTOP
È possibile usare gli stili facoltativi seguenti senza causare un'eccezione first-chance:
DS_SHELLFONT
DS_LOCALEDIT
WS_CLIPCHILDREN
Disabilita tutti gli altri stili di Windows perché non sono compatibili con le finestre delle proprietà. Questo consiglio non si applica agli stili estesi. L'impostazione appropriata di questi stili standard garantisce che la finestra delle proprietà non deve essere modificata ed eviterà di generare l'eccezione first-chance.
Esempio
Vedere l'esempio per CPropertySheet::AddPage
.
CPropertySheet::EnableStackedTabs
Indica se eseguire lo stack di righe di schede in una finestra delle proprietà.
void EnableStackedTabs(BOOL bStacked);
Parametri
bStacked
Indica se le schede in pila sono abilitate nella finestra delle proprietà. Disabilitare le righe in pila di tag impostando bStacked
su FALSE
.
Osservazioni:
Per impostazione predefinita, se una finestra delle proprietà contiene più schede di quelle che verranno incluse in una singola riga nella larghezza della finestra delle proprietà, le schede verranno sovrapposte in più righe. Per usare le schede di scorrimento anziché le schede in pila, chiamare EnableStackedTabs
con bStacked
impostato su FALSE
prima di chiamare DoModal
o Create
.
È necessario chiamare EnableStackedTabs
quando si crea una finestra delle proprietà modale o non modale. Per incorporare questo stile in una CPropertySheet
classe derivata da , scrivere un gestore messaggi per WM_CREATE
. Nella versione sottoposta a override di , chiamare EnableStackedTabs( FALSE )
prima di CWnd::OnCreate
chiamare l'implementazione della classe di base.
Esempio
int CMyPropertySheet::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// Set for Scrolling Tabs style
EnableStackedTabs(FALSE);
// Call the base class
if (CPropertySheet::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
CPropertySheet::EndDialog
Termina la finestra delle proprietà.
void EndDialog(int nEndID);
Parametri
nEndID
Identificatore da utilizzare come valore restituito della finestra delle proprietà.
Osservazioni:
Questa funzione membro viene chiamata dal framework quando viene premuto il pulsante OK, Annulla o Chiudi. Chiamare questa funzione membro se si verifica un evento che deve chiudere la finestra delle proprietà.
Questa funzione membro viene utilizzata solo con una finestra di dialogo modale.
Esempio
Vedere l'esempio per CPropertySheet::PressButton
.
CPropertySheet::GetActiveIndex
Ottiene il numero di indice della pagina attiva della finestra delle proprietà e quindi usa il numero di indice restituito come parametro per GetPage
.
int GetActiveIndex() const;
Valore restituito
Numero di indice della pagina attiva.
Esempio
Vedere l'esempio per CPropertySheet::GetActivePage
.
CPropertySheet::GetActivePage
Recupera la pagina attiva della finestra delle proprietà.
CPropertyPage* GetActivePage() const;
Valore restituito
Puntatore alla pagina attiva.
Osservazioni:
Utilizzare questa funzione membro per eseguire un'azione nella pagina attiva.
Esempio
// The code fragment below sets the last active page (i.e. the
// active page when the propertysheet was closed) to be the first
// visible page when the propertysheet is shown. The last active
// page was saved in m_LastActivePage, (a member variable of
// CDocument-derived class) when OK was selected from the
// propertysheet. CMyPropertySheet is a CPropertySheet-derived class.
BOOL CMyPropertySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pchild = pframe->MDIGetActive();
CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
SetActivePage(doc->m_LastActivePage);
return bResult;
}
BOOL CMyPropertySheet::OnCommand(WPARAM wParam, LPARAM lParam)
{
if (LOWORD(wParam) == IDOK)
{
CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pchild = pframe->MDIGetActive();
CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
doc->m_LastActivePage = GetPageIndex(GetActivePage()); // or GetActiveIndex()
}
return CPropertySheet::OnCommand(wParam, lParam);
}
CPropertySheet::GetPage
Restituisce un puntatore alla pagina specificata in questa finestra delle proprietà.
CPropertyPage* GetPage(int nPage) const;
Parametri
nPage
Indice della pagina desiderata, a partire da 0. Deve essere compreso tra 0 e uno minore del numero di pagine nella finestra delle proprietà, inclusi.
Valore restituito
Puntatore alla pagina corrispondente al nPage
parametro .
Esempio
Vedere l'esempio per CPropertyPage::OnWizardFinish
.
CPropertySheet::GetPageCount
Determina il numero di pagine attualmente presenti nella finestra delle proprietà.
int GetPageCount() const;
Valore restituito
Numero di pagine nella finestra delle proprietà.
Esempio
Vedere l'esempio per CPropertyPage::OnWizardFinish
.
CPropertySheet::GetPageIndex
Recupera il numero di indice della pagina specificata nella finestra delle proprietà.
int GetPageIndex(CPropertyPage* pPage);
Parametri
pPage
Punta alla pagina con l'indice da trovare. Non può essere NULL
.
Valore restituito
Numero di indice di una pagina.
Osservazioni:
Ad esempio, è possibile usare GetPageIndex
per ottenere l'indice di pagina per usare SetActivePage
o GetPage
.
Esempio
Vedere l'esempio per CPropertySheet::GetActivePage
.
CPropertySheet::GetTabControl
Recupera un puntatore a un controllo struttura a schede per eseguire un'operazione specifica per il controllo struttura a schede, ovvero per usare una delle API in CTabCtrl
.
CTabCtrl* GetTabControl() const;
Valore restituito
Puntatore a un controllo struttura a schede.
Osservazioni:
Ad esempio, chiamare questa funzione membro se si desidera aggiungere bitmap a ognuna delle schede durante l'inizializzazione.
Esempio
// Create and associate a tooltip control to the tab control of
// CMyTTPropertySheet. CMyTTPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyTTPropertySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
// Create a tooltip control. m_pToolTipCtrl is a member variable
// of type CToolTipCtrl* in CMyTTPropertySheet class. It is
// initialized to NULL in the constructor, and destroyed in the
// destructor of CMyTTPropertySheet class.
m_pToolTipCtrl = new CToolTipCtrl;
if (!m_pToolTipCtrl->Create(this))
{
TRACE(_T("Unable To create ToolTip\n"));
return bResult;
}
// Associate the tooltip control to the tab control
// of CMyPropertySheet.
CTabCtrl* ptab = GetTabControl();
ptab->SetToolTips(m_pToolTipCtrl);
// Get the bounding rectangle of each tab in the tab control of the
// property sheet. Use this rectangle when registering a tool with
// the tool tip control. IDS_FIRST_TOOLTIP is the first ID string
// resource that contains the text for the tool.
int count = ptab->GetItemCount();
int id = IDS_FIRST_TOOLTIP;
for (int i = 0; i < count; i++)
{
CRect r;
ptab->GetItemRect(i, &r);
VERIFY(m_pToolTipCtrl->AddTool(ptab, id, &r, id));
id++;
}
// Activate the tooltip control.
m_pToolTipCtrl->Activate(TRUE);
return bResult;
}
// Override PreTranslateMessage() so RelayEvent() can be
// called to pass a mouse message to CMyTTPropertySheet's
// tooltip control for processing.
BOOL CMyTTPropertySheet::PreTranslateMessage(MSG* pMsg)
{
if (NULL != m_pToolTipCtrl)
m_pToolTipCtrl->RelayEvent(pMsg);
return CPropertySheet::PreTranslateMessage(pMsg);
}
CPropertySheet::m_psh
Struttura i cui membri archiviano le caratteristiche di PROPSHEETHEADER
.
Osservazioni:
Utilizzare questa struttura per inizializzare l'aspetto della finestra delle proprietà dopo la sua costruzione, ma prima che venga visualizzata con la DoModal
funzione membro. Ad esempio, impostare il dwSize
membro di m_psh
sulla dimensione in cui si desidera che la finestra delle proprietà abbia.
Per altre informazioni su questa struttura, incluso un elenco dei relativi membri, vedere PROPSHEETHEADER
in Windows SDK.
Esempio
// This code fragment shows how to change CPropertySheet's settings
// before it is shown. After the changes, CPropertySheet has the
// caption "Simple Properties", no "Apply" button, and the
// second page (CColorPage) initially on top.
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
dlgPropertySheet.m_psh.dwFlags |= PSH_NOAPPLYNOW | PSH_PROPTITLE;
dlgPropertySheet.m_psh.pszCaption = _T("Simple");
dlgPropertySheet.m_psh.nStartPage = 1;
dlgPropertySheet.DoModal();
CPropertySheet::MapDialogRect
Converte le unità di finestra di dialogo di un rettangolo in unità schermo.
void MapDialogRect(LPRECT lpRect) const;
Parametri
lpRect
Punta a una struttura o CRect
a un RECT
oggetto contenente le coordinate della finestra di dialogo da convertire.
Osservazioni:
Le unità di finestra di dialogo sono indicate in termini di unità base della finestra di dialogo corrente derivata dalla larghezza media e dall'altezza dei caratteri nel tipo di carattere utilizzato per il testo della finestra di dialogo. Un'unità orizzontale è un quarto dell'unità base della finestra di dialogo e un'unità verticale è un ottavo dell'unità di altezza di base della finestra di dialogo.
La GetDialogBaseUnits
funzione Windows restituisce informazioni sulle dimensioni per il tipo di carattere di sistema, ma è possibile specificare un tipo di carattere diverso per ogni finestra delle proprietà se si utilizza lo stile DS_SETFONT nel file di definizione della risorsa. La MapDialogRect
funzione Windows, descritta in Windows SDK, usa il tipo di carattere appropriato per questa finestra di dialogo.
La MapDialogRect
funzione membro sostituisce le unità di finestra di dialogo in lpRect
con unità schermo (pixel) in modo che il rettangolo possa essere usato per creare una finestra di dialogo o posizionare un controllo all'interno di una casella.
CPropertySheet::OnInitDialog
Esegue l'override per aumentare l'inizializzazione della finestra delle proprietà.
virtual BOOL OnInitDialog();
Valore restituito
Specifica se l'applicazione ha impostato lo stato attivo sull'input su uno dei controlli nella finestra delle proprietà. Se OnInitDialog
restituisce un valore diverso da zero, Windows imposta lo stato attivo sull'input sul primo controllo nella finestra delle proprietà. L'applicazione può restituire 0 solo se ha impostato in modo esplicito lo stato attivo sull'input su uno dei controlli nella finestra delle proprietà.
Osservazioni:
Questa funzione membro viene chiamata in risposta al WM_INITDIALOG
messaggio. Questo messaggio viene inviato alla finestra delle proprietà durante le Create
chiamate o DoModal
, che si verificano immediatamente prima della visualizzazione della finestra delle proprietà.
Eseguire l'override di questa funzione membro se è necessario eseguire un'elaborazione speciale quando viene inizializzata la finestra delle proprietà. Nella versione sottoposta a override chiamare prima la classe OnInitDialog
di base ma ignorarne il valore restituito. In genere si tornerà TRUE
dalla funzione membro sottoposta a override.
Non è necessaria una voce della mappa messaggi per questa funzione membro.
CPropertySheet::PressButton
Simula la scelta del pulsante specificato in una finestra delle proprietà.
void PressButton(int nButton);
Parametri
nButton
nButton
: identifica il pulsante da premere. Questo parametro può avere uno dei valori seguenti:
PSBTN_BACK
Sceglie il pulsante Indietro.PSBTN_NEXT
Sceglie il pulsante Avanti.PSBTN_FINISH
Sceglie il pulsante Fine.PSBTN_OK
Sceglie il pulsante OK.PSBTN_APPLYNOW
Sceglie il pulsante Applica ora.PSBTN_CANCEL
Sceglie il pulsante Annulla.PSBTN_HELP
Sceglie il pulsante ?.
Osservazioni:
Per PSM_PRESSBUTTON
altre informazioni sul messaggio Pressbutton di Windows SDK, vedere .
Una chiamata a PressButton
non invierà la PSN_APPLY
notifica da una pagina delle proprietà al framework. Per inviare questa notifica, chiamare CPropertyPage::OnOK
.
Esempio
// Simulate the selection of OK and Cancel buttons when Alt+K and
// Alt+C are pressed. CMyPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyPropertySheet::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
{
BOOL altkey = GetKeyState(VK_MENU) < 0;
if (altkey)
{
BOOL handled = TRUE;
switch (toupper((int)pMsg->wParam))
{
case 'C': // for Alt+C - Cancel button
PressButton(PSBTN_CANCEL); // or EndDialog(IDCANCEL);
break;
case 'K': // for Alt+K - OK button
PressButton(PSBTN_OK); // or EndDialog(IDOK);
break;
default:
handled = FALSE;
}
if (handled)
return TRUE;
}
}
return CPropertySheet::PreTranslateMessage(pMsg);
}
CPropertySheet::RemovePage
Rimuove una pagina dalla finestra delle proprietà e elimina definitivamente la finestra associata.
void RemovePage(CPropertyPage* pPage);
void RemovePage(int nPage);
Parametri
pPage
Punta alla pagina da rimuovere dalla finestra delle proprietà. Non può essere NULL
.
nPage
Indice della pagina da rimuovere. Deve essere compreso tra 0 e uno minore del numero di pagine nella finestra delle proprietà, inclusi.
Osservazioni:
L'oggetto CPropertyPage
stesso non viene eliminato definitivamente finché il proprietario della CPropertySheet
finestra non viene chiuso.
CPropertySheet::SetActivePage
Modifica la pagina attiva.
BOOL SetActivePage(int nPage);
BOOL SetActivePage(CPropertyPage* pPage);
Parametri
nPage
Indice della pagina da impostare. Deve essere compreso tra 0 e uno minore del numero di pagine nella finestra delle proprietà, inclusi.
pPage
Punta alla pagina da impostare nella finestra delle proprietà. Non può essere NULL
.
Valore restituito
Diverso da zero se la finestra delle proprietà viene attivata correttamente; in caso contrario, 0.
Osservazioni:
Ad esempio, usare SetActivePage
se l'azione di un utente in una pagina deve far sì che un'altra pagina diventi la pagina attiva.
Esempio
Vedere l'esempio per CPropertySheet::GetActivePage
.
CPropertySheet::SetFinishText
Imposta il testo nel pulsante di comando Fine.
void SetFinishText(LPCTSTR lpszText);
Parametri
lpszText
Punta al testo da visualizzare sul pulsante di comando Fine.
Osservazioni:
Chiamare SetFinishText
per visualizzare il testo nel pulsante di comando Fine e nascondere i pulsanti Avanti e Indietro dopo che l'utente ha completato l'azione nell'ultima pagina della procedura guidata.
Esempio
// CShapePage is the last wizard property page. Enable the Back
// button and change the Next button to Finish. The "Finish" button
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
psheet->SetFinishText(_T("Done"));
return CPropertyPage::OnSetActive();
}
CPropertySheet::SetTitle
Specifica la didascalia della finestra delle proprietà (il testo visualizzato nella barra del titolo di una finestra cornice).
void SetTitle(
LPCTSTR lpszText,
UINT nStyle = 0);
Parametri
nStyle
Specifica lo stile del titolo della finestra delle proprietà. Lo stile deve essere specificato a 0 o come PSH_PROPTITLE
. Se lo stile è impostato su PSH_PROPTITLE
, la parola "Proprietà" viene visualizzata dopo il testo specificato come didascalia. Ad esempio, la chiamata SetTitle
a ("Semplice", PSH_PROPTITLE
) comporterà una didascalia della finestra delle proprietà "Proprietà semplici".
lpszText
Punta al testo da utilizzare come didascalia nella barra del titolo della finestra delle proprietà.
Osservazioni:
Per impostazione predefinita, una finestra delle proprietà utilizza il parametro caption nel costruttore della finestra delle proprietà.
Esempio
// Declare a CPropertySheet object with a caption "Simple PropertySheet".
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
// Add three pages to the CPropertySheet object. CStylePage, CColorPage,
// and CShapePage are CPropertyPage-derived classes created
// by the Add Class wizard.
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
// Change the caption of the CPropertySheet object
// from "Simple PropertySheet" to "Simple Properties".
dlgPropertySheet.SetTitle(_T("Simple"), PSH_PROPTITLE);
// Show the CPropertySheet object as MODAL.
dlgPropertySheet.DoModal();
CPropertySheet::SetWizardButtons
Abilita o disabilita il pulsante Indietro, Avanti o Fine in una finestra delle proprietà della procedura guidata.
void SetWizardButtons(DWORD dwFlags);
Parametri
dwFlags
Set di flag che personalizzano la funzione e l'aspetto dei pulsanti della procedura guidata. Questo parametro può essere una combinazione dei valori seguenti:
PSWIZB_BACK
Pulsante IndietroPSWIZB_NEXT
Pulsante AvantiPSWIZB_FINISH
Pulsante FinePSWIZB_DISABLEDFINISH
Pulsante Fine disabilitato
Osservazioni:
Chiamare SetWizardButtons
solo dopo che la finestra di dialogo è aperta. Non è possibile chiamare prima di chiamare SetWizardButtons
DoModal
. In genere, è necessario chiamare SetWizardButtons
da CPropertyPage::OnSetActive
.
Se si desidera modificare il testo nel pulsante Fine o nascondere i pulsanti Avanti e Indietro dopo che l'utente ha completato la procedura guidata, chiamare SetFinishText
. Si noti che lo stesso pulsante è condiviso per Fine e Avanti. È possibile visualizzare un pulsante Fine o Avanti contemporaneamente, ma non entrambi.
Esempio
Un CPropertySheet
oggetto ha tre pagine delle proprietà della procedura guidata: CStylePage
, CColorPage
e CShapePage
. Il frammento di codice seguente mostra come abilitare e disabilitare i pulsanti Indietro e Avanti nella pagina delle proprietà della procedura guidata.
// CStylePage is the first wizard property page. Disable the Back
// button but enable the Next button.
BOOL CStylePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*) GetParent();
psheet->SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
// CColorPage is the second wizard property page. Enable both the
// Back button and the Next button.
BOOL CColorPage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
// CShapePage is the last wizard property page. Enable the Back
// button and change the Next button to Finish. The "Finish" button
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
psheet->SetFinishText(_T("Done"));
return CPropertyPage::OnSetActive();
}
CPropertySheet::SetWizardMode
Stabilisce una pagina delle proprietà come procedura guidata.
void SetWizardMode();
Osservazioni:
Una caratteristica chiave di una pagina delle proprietà della procedura guidata è che l'utente si sposta usando i pulsanti Avanti o Fine, Indietro e Annulla anziché schede.
Chiamare prima di SetWizardMode
chiamare DoModal
. Dopo aver chiamato SetWizardMode
, DoModal
verrà restituito ID_WIZFINISH
(se l'utente si chiude con il pulsante Fine) o IDCANCEL
.
SetWizardMode
imposta il PSH_WIZARD
flag.
Esempio
CPropertySheet sheet(_T("Simple PropertySheet"));
CStylePage pageStyle;
CColorPage pageColor;
CShapePage pageShape;
sheet.AddPage(&pageStyle);
sheet.AddPage(&pageColor);
sheet.AddPage(&pageShape);
sheet.SetWizardMode();
sheet.DoModal();
Vedi anche
Esempio MFC CMNCTRL1
Esempio MFC CMNCTRL2
Esempio MFC PROPDLG
Esempio MFC SNAPVW
CWnd
Classe
Grafico della gerarchia