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à

CObject

CCmdTarget

CWnd

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 hbmWatermarkparametri , hpalWatermarke/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 hbmWatermarkparametri , hpalWatermarke/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 CPropertySheetclasse derivata da , scrivere un gestore messaggi per WM_CREATE. Nella versione sottoposta a override di , chiamare EnableStackedTabs( FALSE ) prima di CWnd::OnCreatechiamare 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 SetTitlea ("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 Indietro

  • PSWIZB_NEXT Pulsante Avanti

  • PSWIZB_FINISH Pulsante Fine

  • PSWIZB_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, CColorPagee 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