MDI, exemple : illustre MDI sans utiliser l'architecture Document/Vue
Mise à jour : novembre 2007
L'exemple MDI utilise la prise en charge de l'interface multidocument (MDI) de MFC sans recourir à l'architecture Document/Vue.
Pour obtenir un exemple MDI supplémentaire, consultez MDIDOCVW.
MDI illustre également la minuterie Microsoft Windows, CColorDialog, CBitmap et la modification du curseur par défaut d'une fenêtre.
Note de sécurité : |
---|
Cet exemple de code est fourni pour illustrer un concept et ne doit pas être utilisé dans des applications ou des sites Web, car il peut ne pas illustrer les pratiques de programmation les plus sûres. Microsoft n'assume aucune responsabilité pour tout dommage indirect ou consécutif en cas d'utilisation de l'exemple de code à des fins autres que celles prévues. |
Pour obtenir des exemples et des instructions d'installation :
Dans le menu ? (Aide) de Visual Studio, cliquez sur Exemples.
Pour plus d'informations, consultez Recherche des fichiers d'exemple.
La liste la plus récente et la plus complète d'exemples est disponible en ligne à partir de la page Visual Studio 2008 Samples.
Des exemples sont également disponibles sur le disque dur de votre ordinateur. Des exemples et un fichier Readme sont stockés par défaut dans un dossier sous \Program Files\Visual Studio 9.0\Samples\. Pour les éditions Express de Visual Studio, tous les exemples sont disponibles en ligne.
Génération et exécution de l'exemple
Pour générer et exécuter l'exemple MDI
Ouvrez la solution mdi.sln.
Dans le menu Générer, cliquez sur Générer.
Dans le menu Déboguer, cliquez sur Exécuter sans débogage.
L'exemple d'application MDI fournit une fenêtre parente et deux types distincts de fenêtres enfants MDI : une fenêtre Bounce, dans laquelle une balle rebondit de tous côtés, et une fenêtre Hello, qui affiche le texte "Hello, World!". Vous pouvez créer plusieurs instances de chaque type de fenêtre.
Dans le menu File, cliquez sur New Bounce ou New Hello pour créer une fenêtre enfant MDI. Les deux fenêtres enfants MDI déterminent les menus qui doivent être affichés lorsqu'elles sont actives. Ces deux fenêtres possèdent un menu Color. Dès que vous effectuez un choix dans ce menu, la couleur de la balle qui rebondit ou celle du texte Hello est mise à jour. Cliquez sur Custom pour appeler la boîte de dialogue Couleurs, dans laquelle vous pouvez sélectionner une couleur personnalisée.
La fenêtre Bounce dispose également d'un menu Speed, à partir duquel vous pouvez sélectionner la vitesse de déplacement de la balle à l'écran.
Si vous réduisez la fenêtre Bounce, remarquez que son icône n'est pas statique. À la place, une petite balle rebondit dans l'icône. En revanche, la fenêtre Hello possède une icône normale.
MDI sans documents ni vues
Contrairement à une application MDI produite par l'Assistant Application, cet exemple d'application n'utilise pas de prise en charge de l'infrastructure pour les documents et les vues. Par conséquent, il n'utilise pas de modèles de document ; la fonction InitInstance de l'application n'appelle pas AddDocTemplate.
Néanmoins, cette application tire parti de la prise en charge MDI de l'infrastructure. CMainFrame est dérivé de CMDIFrameWnd. CBounceWnd et CHelloWnd sont dérivés de CMDIChildWnd. Les commandes du menu Fenêtre, telles que Mosaïque, sont gérées par l'implémentation par défaut de l'infrastructure dans CMDIFrameWnd.
Bien que CBounceWnd et CHelloWnd se substituent tous les deux à Create, la substitution n'est pas indispensable pour tirer parti de la prise en charge MDI de l'infrastructure. La substitution de Create montre comment modifier le curseur et l'icône par défaut d'une fenêtre. La modification du curseur ou de l'icône par défaut d'une fenêtre nécessite l'inscription d'un nouveau WNDCLASS en appelant AFXRegisterWndClass et en passant le nom de WNDCLASS dans l'appel à Create.
Mots clés
Cet exemple illustre l'utilisation des mots clés suivants :
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
Remarque : |
---|
Certains exemples, tels que celui-ci, n'ont pas été modifiés pour refléter les changements apportés aux Assistants, aux bibliothèques et au compilateur Visual C++, mais ils illustrent bien l'exécution de la tâche souhaitée. |