Comment faire pour utiliser la classe CFormView de document unique interface (monodocument SDI) et plusieurs applications d'interface (MDI) de document

Traductions disponibles Traductions disponibles
Numéro d'article: 98598 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

note Microsoft Visual C++ .NET (2002) prend en charge le modèle de code géré qui est fourni par Microsoft .NET Framework et le modèle de code Microsoft Windows natif non géré. Les informations contenues dans cet article s'applique uniquement à un code Visual C++ non géré.

note Visual C++ 2005 prend en charge le modèle de code géré qui est fourni par Microsoft .NET Framework et le modèle de code Microsoft Windows natif non géré.

Résumé

La classe CFormView fournit une méthode pratique pour placer des contrôles dans un affichage qui repose sur un modèle de boîte de dialogue. La procédure générale pour utiliser un CFormView décrit dans la documentation de la classe et est illustrée dans les applications d'exemple VIEWEX et CHKBOOK fournies avec Microsoft Foundation Classes (MFC) versions 2.x et ci-dessus. Toutefois, ces applications ne reflète pas rendre la taille initiale de la fenêtre cadre être le même que la taille initiale de l'écran.

La section suivante répertorie les étapes requises pour prendre en charge la création d'une même document interface SDI (interface) ou plusieurs application interface (MDI) de document basé sur un CFormView, redimensionnement de la fenêtre de cadre initiale autour de l'écran, en changeant le style de cadre et fermeture d'un document MDI en utilisant un bouton dans l'écran.

Plus d'informations

Les étapes suivantes décrivent comment créer un projet MFC AppWizard application utilisant le CFormView en tant que vue par défaut :
  1. Utiliser AppWizard pour générer une application SDI ou MDI. Cela insère un modèle de boîte de dialogue avec les styles corrects définie pour le fichier de ressources de votre projet.

    visual Studio 6.0 :

    À l'étape 6 de AppWizard, sélectionnez la classe Vue. Dans la zone de liste modifiable classe de base , sélectionnez CFormView pour spécifier CFormView comme la classe de base.

    visual Studio .NET ou Visual Studio 2005 :

    Dans l'étape 1 de AppWizard, sélectionnez classes générées . Dans la zone de liste modifiable classe de base , sélectionnez CFormView pour spécifier CFormView comme la classe de base.
  2. Remplacer la fonction membre OnUpdate() et appeler UpdateData() comme indiqué dans la documentation CFormView pour mettre à jour les variables membres avec les données de document en cours et effectuer des données de boîte de dialogue exchange (DDX).

    Remarque : la sous-routine UpdateData n'est pas virtuelle et l'appel de la classe de base garantit que la classe dérivée DoDataExchange est appelé via le polymorphisme standard. Les états de documentation CFormView pour appeler, ne remplace pas la sous-routine UpdateData.
  3. Si vous souhaitez définir la taille initiale de la vue du formulaire, remplacer la fonction OnInitialUpdate(). Le texte ci-dessous fournit des informations supplémentaires sur cette étape, qui est légèrement différent dans une application SDI ou MDI.

Modifier la taille d'un cadre principal SDI autour une CFormView

Pour modifier la taille du cadre principal d'une application SDI (qui utilise CFormView comme sa classe vue) la taille appropriée pour le formulaire vous avez créé dans Application Studio, remplacer la fonction OnInitialUpdate() dans votre classe dérivée CFormView, comme suit :
      void CMyFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         GetParentFrame()->RecalcLayout();
         ResizeParentToFit(); // default argument is TRUE
      }
				
ResizeParentToFit() la fonction n'empêche pas l'écran de modifier taille lorsque l'utilisateur modifie la taille du cadre principal application (barres de défilement sont ajoutés automatiquement si nécessaire). Pour modifier le style de la fenêtre de cadre qui est le parent d'une vue de formulaire, vous pouvez remplacer la fonction PreCreateWindow() dans la classe CMainFrame générée par AppWizard. Par exemple, pour supprimer le style WS_THICKFRAME et pour empêcher l'utilisateur de modifier la taille de la fenêtre, déclarez PreCreateWindow() dans MAINFRM.H et ajoutez le code suivant à MAINFRM.CPP :
      BOOL CMainFrame::PreCreateWindow(CREATESTRUCT &cs)
      {
         cs.style &= ~WS_THICKFRAME;
         return CFrameWnd::PreCreateWindow(cs);
      }
				

Modifier la taille d'un cadre enfant MDI autour une CFormView

Le processus de modifier la taille de cadre MDI enfant est similaire à modifier la taille d'un cadre principal pour une application SDI, comme expliqué ci-dessus. Toutefois, l'appel RecalcLayout() n'est pas nécessaire.

Pour modifier la taille d'un cadre enfant MDI autour d'une vue de formulaire, remplacer la fonction OnInitialUpdate() dans votre classe dérivée CFormView comme suit :
      void CMDIFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         ResizeParentToFit(); // Default argument is TRUE.
      }
				
si l'application remplace l'argument par défaut de la fonction ResizeParentToFit(), essentiellement les mêmes conséquences se produisent en tant que pour une application SDI, comme expliqué ci-dessus. En outre, la fenêtre enfant peut-être trop volumineux pour le cadre principal MDI englobant ou pour l'intégralité de l'écran.

Pour modifier le style du cadre MDI enfant (par exemple, pour supprimer le style WS_THICKFRAME afin l'utilisateur ne peut pas modifier la taille de la fenêtre), dériver une classe de fenêtre enfant MDI et remplacer la fonction PreCreateWindow comme illustré dans l'exemple SDI ci-dessus.

Fermer un formulaire MDI avec un bouton

Pour créer un bouton dans un formulaire qui ferme le document, ajoutez un gestionnaire de messages pour le message BN_CLICKED à la classe CFormView. Vérifiez que les boutons CFormView ne sont pas les identificateurs IDOK ou IDCANCEL par défaut. Si ce cas, incorrectes entrées dans les fonctions incorrectes pour les boutons et de mappage de message sont créées.

Lorsque le gestionnaire de messages est en place, vous pouvez simuler la commande Fermer dans le fichier menu avec le code suivant :
      void CMyForm::OnClickedButton1()
      {
         PostMessage(WM_COMMAND, ID_FILE_CLOSE);
      }
				
cette méthode pour fermer un formulaire invite l'utilisateur à enregistrer le fichier si la fonction de membre IsModified() associée au document renvoie la valeur TRUE.

Propriétés

Numéro d'article: 98598 - Dernière mise à jour: jeudi 5 janvier 2006 - Version: 4.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Foundation Class Library 4.2 sur le système suivant
    • Microsoft Visual C++ 1.0 Édition Professionnelle
    • Microsoft Visual C++ 1.5 Édition Professionnelle
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 Édition Professionnelle
    • Microsoft Visual C++ 1.0 Édition Professionnelle
    • Microsoft Visual C++ 2.0 Édition Professionnelle
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 5.0 Édition Standard
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual C++ .NET 2003 Initiation
    • Microsoft Visual C++ .NET 2002 Initiation
    • Microsoft Visual C++ 2005 Express Edition
Mots-clés : 
kbmt kbdocview kbhowto kbmdi kbuidesign KB98598 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 98598
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com