Partager via


VIEWEX, exemple : illustre les vues multiples, les vues avec défilement et les fenêtres fractionnées

Mise à jour : novembre 2007

L'exemple VIEWEX illustre les éléments suivants :

  • Fenêtre fractionnée statique dans laquelle l'ordre et le nombre de volets ne changent jamais. Dans ce type de fenêtre, les volets sont généralement de différentes classes d'affichage.

  • Mode Formulaire (CFormView) qui reste synchronisé avec les autres modes d'affichage d'un même document.

  • Échange de données de boîtes de dialogue (DDX), notamment pour les données de groupes de cases d'option.

Le document de l'exemple VIEWEX est simple. Ses données se composent d'une chaîne et de sa couleur.

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 VIEWEX

  1. Ouvrez la solution viewex.sln.

  2. Dans le menu Générer, cliquez sur Générer.

  3. Dans le menu Déboguer, cliquez sur Exécuter sans débogage.

Lorsque vous exécutez VIEWEX pour la première fois, il affiche une boîte de dialogue New dans laquelle vous pouvez sélectionner le type de fenêtre de document à utiliser :

  • Simple Text, qui affiche la chaîne dans sa couleur actuelle, centrée dans la fenêtre.

  • Input Form View, qui fournit un formulaire (CFormView) où vous pouvez modifier la chaîne dans un contrôle d'édition, ainsi que sa couleur, en la sélectionnant à partir d'un groupe de cases d'option.

  • Splitter Frame, qui se présente sous forme d'un texte simple et d'un formulaire de saisie, dans deux volets côte à côte d'une fenêtre fractionnée. Lorsque vous modifiez la chaîne (caractère par caractère) ou sa couleur dans le formulaire de saisie, le changement se reflète automatiquement dans la vue en texte simple.

  • Three-way Splitter Frame, qui affiche le formulaire de saisie dans un seul volet de fenêtre fractionnée. L'autre volet est divisé en deux sous-volets par une barre de fractionnement : le sous-volet supérieur affiche une vue en texte simple ; le sous-volet inférieur affiche une vue en couleurs. Celle-ci est peinte entièrement et automatiquement à partir de la couleur en cours.

Vous pouvez modifier la chaîne en utilisant le contrôle d'édition du formulaire de saisie, puis en cliquant dans le menu Edit sur Change Data.

Vous pouvez également afficher plusieurs documents en même temps. Néanmoins, pour des raisons de simplicité, vous ne pouvez pas enregistrer ou rouvrir les documents. Vous ne pouvez pas non plus afficher le même document dans plusieurs des fenêtres décrites ci-dessus.

Fenêtre fractionnée statique

Dans VIEWEX, la fenêtre enfant MDI crée une fenêtre fractionnée en 2 parties dans sa zone cliente, en effectuant une substitution de OnCreateClient. Dans l'affichage en trois volets, VIEWEX incorpore une seconde fenêtre fractionnée en deux parties dans le volet droit de la fenêtre déjà fractionnée en deux parties.

VIEWEX appelle CSplitterWnd::CreateStatic au lieu de CSplitterWnd::Create pour créer des fenêtres fractionnées statiques à la place de fenêtres fractionnées dynamiques. Chaque volet de la fenêtre fractionnée de VIEWEX comporte une classe d'affichage différente. VIEWEX appelle CSplitterWnd::CreateView pour spécifier la classe dérivée CView dans chaque volet. Dans le cas du premier volet, VIEWEX utilise la classe d'affichage spécifique dans l'objet de modèle de document ; cette classe est ensuite passée à OnCreateClient dans le membre m_pNewViewClass de CCreateContext. Dans le cas des autres volets, VIEWEX spécifie le RUNTIME_CLASS de la vue.

Mode Formulaire

CInputView illustre la synchronisation d'un mode Formulaire avec les autres vues ; ainsi, lorsque l'utilisateur entre des données dans l'un des champs, la modification est immédiatement reflétée par les autres vues. Pour ce faire, CInputView mappe l'ensemble des contrôles de ON_EN_CHANGE et ON_BN_CLICKED vers un gestionnaire de messages OnDataChange central. OnDataChange appelle CView::UpdateData pour transférer les données de l'écran aux variables membres de CInputView, et appelle également UpdateAllViews du document pour informer les autres vues de la modification.

Échange de données de boîtes de dialogue (DDX)

CInputView de VIEWEX illustre l'échange de données de boîtes de dialogue (DDX) pour les données de groupes de cases d'option. Dans Iputvw.h, remarquez que seule la première case du groupe de cases d'option est mappée vers la variable membre m_iColor dans CInputView::DoDataExchange. m_iColor est une valeur ordinale de base zéro (int) représentant la case d'option sélectionnée.

Mots clés

Cet exemple illustre l'utilisation des mots clés suivants :

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

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.

Voir aussi

Autres ressources

Exemples MFC