Condividi tramite


Esempio VIEWEX: visualizzazioni multiple, visualizzazioni a scorrimento e finestre con separatore

Aggiornamento: novembre 2007

Nell'esempio VIEWEX viene illustrato quanto riportato di seguito.

  • Una finestra con separatore statico in cui l'ordine e il numero dei riquadri non cambiano e i riquadri solitamente appartengono a classi visualizzazioni diverse.

  • Una visualizzazione form (CFormView) sincronizzata con altre visualizzazioni nello stesso documento.

  • DDX (dialog data exchange), in particolare dei dati di gruppi di pulsanti di opzione.

Il documento in VIEWEX è semplice. I dati sono costituiti da una stringa e dal relativo colore.

Nota sulla sicurezza:

Questo esempio di codice viene fornito solo a scopo dimostrativo e non deve essere utilizzato in applicazioni o siti Web, poiché potrebbe non implementare le tecniche migliori a livello di sicurezza. Microsoft esclude ogni responsabilità per danni diretti o indiretti derivanti dall'utilizzo dell'esempio di codice per scopi diversi da quelli previsti.

Per ottenere gli esempi e le istruzioni per l'installazione:

  • In Visual Studio scegliere Esempi dal menu ?.

    Per ulteriori informazioni, vedere Individuazione dei file di esempio.

  • La versione più recente e l'elenco completo degli esempi sono disponibili in linea alla pagina Visual Studio 2008 Samples.

  • È anche possibile trovare gli esempi sul disco rigido del computer. Per impostazione predefinita, gli esempi e il file Leggimi vengono copiati in una cartella nel percorso \Programmi\Visual Studio 9.0\Samples\. Per le versioni Express di Visual Studio, tutti gli esempi sono disponibili in linea.

Generazione ed esecuzione dell'esempio

Per generare ed eseguire l'esempio VIEWEX

  1. Aprire il file di soluzione viewex.sln.

  2. Scegliere Genera dal menu Genera.

  3. Scegliere Avvia senza eseguire debug dal menu Debug.

Quando si esegue VIEWEX per la prima volta, viene presentata la finestra di dialogo New in cui viene selezionato il tipo di finestra di documento da illustrare:

  • Simple Text consente di visualizzare la stringa, con il colore corrente, al centro della finestra.

  • Input Form View fornisce un form (CFormView) in cui è possibile modificare la stringa in un controllo di modifica e cambiare il colore effettuando una scelta da un gruppo di pulsanti di opzione.

  • Splitter Frame con Simple Text e Input Form consente di visualizzare due riquadri affiancati di una finestra con separatore. Quando si modifica la stringa, carattere per carattere, oppure il colore in Input Form, la modifica viene riportata automaticamente nella visualizzazione Simple Text.

  • Three-way Splitter Frame attiva la visualizzazione Input Form in un riquadro della finestra con separatore. Una barra di divisione divide l'altro riquadro in due sottoriquadri: quello superiore contiene una visualizzazione Simple Text, quello inferiore contiene una visualizzazione Color. La visualizzazione Color viene interamente colorata con il colore corrente.

È possibile modificare la stringa utilizzando il controllo di modifica nel form di input e scegliendo Edit Data dal menu Edit.

È anche possibile visualizzare più documenti contemporaneamente. Per ragioni di semplicità, tuttavia, non è possibile salvare e aprire nuovamente i documenti e non è possibile visualizzare lo stesso documento in più di una delle finestre elencate sopra.

Finestra con separatore statico

In VIEWEX, la finestra figlio MDI crea una finestra con separatore 1x2 all'interno dell'area client eseguendo l'override di OnCreateClient. Nel caso di un separatore a tre vie, una seconda finestra con separatore 2x1 viene incorporata all'interno del riquadro di destra della finestra con separatore 1x2.

VIEWEX chiama CSplitterWnd::CreateStatic invece di CSplitterWnd::Create per creare finestre con separatore statico invece di finestre con separatore dinamico. Ciascun riquadro della finestra con separatore di VIEWEX appartiene a una classe visualizzazione diversa. VIEWEX chiama CSplitterWnd::CreateView per specificare la classe derivata CView per ciascun riquadro. Nel caso del primo riquadro, viene utilizzata la classe visualizzazione specifica nell'oggetto modello di documento, che viene passata a OnCreateClient nel membro m_pNewViewClass di CCreateContext. Nel caso di altri riquadri, viene specificata RUNTIME_CLASS della visualizzazione.

Visualizzazione form

In CInputView viene illustrata la sincronizzazione di una visualizzazione form con altre visualizzazioni, affinché le modifiche apportate dall'utente in uno dei campi vengano riportate immediatamente nelle altre visualizzazioni. CInputView implementa questa operazione eseguendo il mapping di ON_EN_CHANGE e ON_BN_CLICKED per tutti i controlli a un gestore messaggi OnDataChange. OnDataChange chiama CView::UpdateData per trasferire i dati dallo schermo alle variabili membro di CInputView, quindi chiama UpdateAllViews del documento per comunicare la modifica alle altre visualizzazioni.

Dialog Data Exchange (DDX)

CInputView di VIEWEX illustra la funzionalità DDX (dialog data exchange) dei dati di gruppi di pulsanti di opzione. In Iputvw.h, si osservi che solo il primo pulsante nel gruppo di pulsanti di opzione è mappato alla variabile membro m_iColor in CInputView::DoDataExchange. m_iColor rappresenta un valore ordinale int a base zero che rappresenta il pulsante di opzione selezionato.

Parole chiave

Nell'esempio vengono illustrate le seguenti parole chiave:

CDC::FillRect; CDialog::DoModal; CDocument::OnNewDocument; CDocument::UpdateAllViews; CFrameWnd::LoadFrame; CFrameWnd::OnCreateClient; CFrameWnd::SetActiveView; CObject::Serialize; CRect::Height; CRect::Width; CSplitterWnd::CreateStatic; CSplitterWnd::CreateView; CSplitterWnd::GetPane; CSplitterWnd::IdFromRowCol; CString::GetLength; CView::GetDocument; CView::OnActivateView; CView::OnDraw; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::InitInstance; CWinApp::OnFileNew; CWnd::DoDataExchange; CWnd::GetClientRect; CWnd::OnMouseActivate; CWnd::ShowWindow; CWnd::UpdateData; CWnd::UpdateWindow; RGB; SetBkMode; SetTextAlign; SetTextColor; TextOut; max

Nota:

Alcuni esempi, tra cui il presente, non sono stati cambiati per riflettere le modifiche apportate alle procedure guidate, alle librerie e al compilatore di Visual C++, tuttavia forniscono comunque le istruzioni per completare l'attività desiderata.

Vedere anche

Altre risorse

Esempi relativi ad MFC