Condividi tramite


Esempio MDI: supporto MDI senza l'architettura documento/visualizzazione

Aggiornamento: novembre 2007

Nell'esempio MDI viene implementato il supporto MDI (multiple-document interface) di MFC senza utilizzare l'architettura documento/visualizzazione.

Per un ulteriore esempio MDI, vedere MDIDOCVW.

In MDI vengono illustrati anche il timer Microsoft Windows, CColorDialog, CBitmap e la modifica del cursore predefinito di una finestra.

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 MDI

  1. Aprire il file di soluzione mdi.sln.

  2. Scegliere Genera dal menu Genera.

  3. Scegliere Avvia senza eseguire debug dal menu Debug.

L'applicazione di esempio MDI fornisce una finestra padre con due diversi tipi di finestre figlio MDI: una finestra Bounce, contenente una palla in movimento, e una finestra Hello, in cui viene visualizzato il testo "Hello, World!". È possibile creare più istanze di ciascun tipo di finestra.

Scegliere New Bounce o New Hello dal menu File per creare una nuova finestra figlio MDI. Entrambe le finestre figlio MDI determinano i menu che vengono visualizzati quando le finestre sono attivate. In entrambe le finestre è disponibile un menu Color. Quando si sceglie un colore da questo menu, il colore della palla animata o del testo Hello viene aggiornato di conseguenza. Scegliere la voce Custom per visualizzare una finestra di dialogo dei colori nella quale è possibile selezionare un colore particolare.

Nella finestra Bounce è inoltre disponibile un menu Speed, da cui è possibile scegliere la velocità di animazione della palla.

Se si riduce a icona la finestra Bounce, si noterà che l'icona non è statica. Una piccola palla si muove all'interno dell'icona. La finestra Hello, al contrario, presenta un'icona normale.

MDI senza documenti e visualizzazioni

Diversamente da un'applicazione MDI generata dalla Creazione guidata applicazioni, l'applicazione di esempio non utilizza il supporto del framework per documenti e visualizzazioni. Non vengono quindi utilizzati modelli di documenti e InitInstance non chiama AddDocTemplate.

Tuttavia, l'applicazione sfrutta pienamente il supporto MDI del framework. CMainFrame è derivato da CMDIFrameWnd, mentre CBounceWnd e CHelloWnd sono derivati da CMDIChildWnd. I comandi del menu Window, ad esempio Tile, vengono gestiti dall'implementazione predefinita del framework in CMDIFrameWnd.

Sebbene CBounceWnd e CHelloWnd eseguano l'override di Create, l'override non è necessario per sfruttare il supporto MDI del framework. L'override di Create consente di illustrare come modificare l'icona e il cursore predefiniti di una finestra. Per effettuare questa modifica, è necessario registrare una nuova classe WNDCLASS chiamando AFXRegisterWndClass e passando il nome di WNDCLASS nella chiamata a Create.

Parole chiave

Nell'esempio vengono illustrate le seguenti parole chiave:

AfxGetInstanceHandle; AfxRegisterWndClass; CBitmap::CreateCompatibleBitmap; CCmdUI::SetCheck; CColorDialog::DoModal; CColorDialog::GetColor; CDC::BitBlt; CDC::CreateCompatibleDC; CDC::DeleteDC; CDC::DrawText; CDC::Ellipse; CDC::FillRect; CDC::GetDeviceCaps; CDC::SelectObject; CDC::SetBkColor; CDC::SetTextColor; CFrameWnd::LoadFrame; CFrameWnd::rectDefault; CGdiObject::DeleteObject; CMDIChildWnd::Create; CMenu::LoadMenu; CWinApp::InitInstance; CWnd::DestroyWindow; CWnd::GetClientRect; CWnd::GetCurrentMessage; CWnd::GetDC; CWnd::Invalidate; CWnd::KillTimer; CWnd::MessageBox; CWnd::OnCreate; CWnd::OnPaint; CWnd::OnSize; CWnd::OnTimer; CWnd::ReleaseDC; CWnd::SetTimer; CWnd::ShowWindow; CWnd::UpdateWindow; GetSysColor; LOWORD; LoadCursor; LoadIcon; MAKEINTRESOURCE; RGB; max; min

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