Partager via


TN022 : implémentation de commandes standard

Remarque

La note technique suivante n'a pas été mise à jour depuis son inclusion initiale dans la documentation en ligne. Par conséquent, certaines procédures et rubriques peuvent être obsolètes ou incorrectes. Pour obtenir les informations les plus récentes, il est recommandé de rechercher l'objet qui vous intéresse dans l'index de la documentation en ligne.

Cette note décrit les implémentations de commande standard fournies par MFC 2.0. Lisez d’abord la note technique 21 , car elle décrit les mécanismes utilisés pour implémenter de nombreuses commandes standard.

Cette description suppose la connaissance des architectures, API et pratiques courantes de programmation MFC. Les API « implémentation uniquement » documentées et non documentées sont décrites. Il ne s’agit pas d’un endroit où commencer à apprendre les fonctionnalités du programme dans MFC. Pour plus d’informations générales et pour plus d’informations sur les API documentées, reportez-vous à Visual C++.

Le problème

MFC définit de nombreux ID de commande standard dans le fichier d’en-tête AFXRES.H. La prise en charge de l’infrastructure pour ces commandes varie. Comprendre où et comment les classes de framework gèrent ces commandes vous montrent non seulement comment fonctionne l’infrastructure en interne, mais fournit des informations utiles sur la façon de personnaliser les implémentations standard et de vous apprendre quelques techniques pour implémenter vos propres gestionnaires de commandes.

Contenu de cette note technique

Chaque ID de commande est décrit dans deux sections :

  • Titre : nom symbolique de l’ID de commande (par exemple, ID_FILE_SAVE) suivi de l’objectif de la commande (par exemple, « enregistre le document actif ») séparé par un signe deux-points.

  • Un ou plusieurs paragraphes décrivant les classes qui implémentent la commande et ce que fait l’implémentation par défaut

La plupart des implémentations de commandes par défaut sont préfiltrés dans la carte des messages de classe de base du framework. Certaines implémentations de commande nécessitent un câblage explicite dans votre classe dérivée. Ceux-ci sont décrits sous « Remarque ». Si vous avez choisi les options appropriées dans AppWizard, ces gestionnaires par défaut sont connectés pour vous dans l’application squelette générée.

Conventions d’affectation de noms

Les commandes standard suivent une convention d’affectation de noms simple que nous vous recommandons d’utiliser si possible. La plupart des commandes standard se trouvent dans des emplacements standard dans la barre de menus d’une application. Le nom symbolique de la commande commence par « ID_ » suivi du nom de menu contextuel standard, suivi du nom de l’élément de menu. Le nom symbolique est en majuscules avec des sauts de mot de soulignement. Pour les commandes qui n’ont pas de noms d’éléments de menu standard, un nom de commande logique est défini à partir de « ID_ » (par exemple, ID_NEXT_PANE).

Nous utilisons le préfixe « ID_ » pour indiquer les commandes conçues pour être liées aux éléments de menu, aux boutons de barre d’outils ou à d’autres objets d’interface utilisateur de commande. Les gestionnaires de commandes qui gèrent les commandes « ID_ » doivent utiliser les mécanismes de ON_COMMAND et de ON_UPDATE_COMMAND_UI de l’architecture de commande MFC.

Nous vous recommandons d’utiliser le préfixe standard « IDM_ » pour les éléments de menu qui ne suivent pas l’architecture de commande et ont besoin d’un code spécifique au menu pour les activer et les désactiver. Bien sûr, le nombre de commandes spécifiques au menu doit être petit, car en suivant l’architecture de commande MFC, les gestionnaires de commandes sont plus puissants (car ils fonctionnent avec des barres d’outils), mais rend le code du gestionnaire de commandes réutilisable.

Plages d’ID

Pour plus d’informations sur l’utilisation des plages d’ID dans MFC, consultez la note technique 20 .

Les commandes standard MFC sont comprises dans la plage 0xE000 à 0xEFFF. Veuillez ne pas compter sur les valeurs spécifiques de ces ID, car elles sont susceptibles de changer dans les futures versions de la bibliothèque.

Votre application doit définir ses commandes dans la plage 0x8000 à 0xDFFF.

ID de commande standard

Pour chaque ID de commande, il existe une chaîne d’invite de ligne de message standard qui se trouve dans le fichier PROMPTS. RC. L’ID de chaîne de cette invite de menu doit être identique à celui de l’ID de commande.

  • ID_FILE_NEW Crée un document nouveau/vide.

    Remarque

    Vous devez vous connecter à la carte des messages de votre CWinAppclasse dérivée pour activer cette fonctionnalité.

    CWinApp::OnFileNew implémente cette commande différemment en fonction du nombre de modèles de document dans l’application. S’il n’y en a qu’un CDocTemplateseul, CWinApp::OnFileNew crée un document de ce type, ainsi que la classe d’image et d’affichage appropriée.

    S’il en existe plusieurs CDocTemplate, CWinApp::OnFileNew invite l’utilisateur à utiliser une boîte de dialogue (AFX_IDD_NEWTYPEDLG) lui permettant de sélectionner le type de document à utiliser. L’option sélectionnée CDocTemplate est utilisée pour créer le document.

    Une personnalisation courante de ID_FILE_NEW consiste à fournir un choix graphique différent et plus graphique des types de documents. Dans ce cas, vous pouvez implémenter votre propre CMyApp::OnFileNew carte de messages et la placer dans votre carte de messages au lieu de CWinApp::OnFileNew. Il n’est pas nécessaire d’appeler l’implémentation de classe de base.

    Une autre personnalisation courante de ID_FILE_NEW consiste à fournir une commande distincte pour créer un document de chaque type. Dans ce cas, vous devez définir de nouveaux ID de commande, par exemple ID_FILE_NEW_CHART et ID_FILE_NEW_SHEET.

  • ID_FILE_OPEN Ouvre un document existant.

    Remarque

    Vous devez vous connecter à la carte des messages de votre CWinAppclasse dérivée pour activer cette fonctionnalité.

    CWinApp::OnFileOpen a une implémentation très simple d’appel CWinApp::DoPromptFileName suivie du CWinApp::OpenDocumentFile nom de fichier ou de chemin d’accès du fichier à ouvrir. La CWinApp routine DoPromptFileName d’implémentation affiche la boîte de dialogue FileOpen standard et la remplit avec les extensions de fichier obtenues à partir des modèles de documents actuels.

    Une personnalisation courante de ID_FILE_OPEN consiste à personnaliser la boîte de dialogue FileOpen ou à ajouter des filtres de fichiers supplémentaires. La méthode recommandée pour le personnaliser consiste à remplacer l’implémentation par défaut par votre propre boîte de dialogue FileOpen et à appeler CWinApp::OpenDocumentFile avec le nom du fichier ou du chemin d’accès du document. Il n’est pas nécessaire d’appeler la classe de base.

  • ID_FILE_CLOSE ferme le document actuellement ouvert.

    CDocument::OnFileClose appels CDocument::SaveModified pour inviter l’utilisateur à enregistrer le document s’il a été modifié, puis appelle OnCloseDocument. Toute la logique de fermeture, y compris la destruction du document, est effectuée dans la OnCloseDocument routine.

    Remarque

    ID_FILE_CLOSE agit différemment d’un message WM_CLOSE ou d’une commande système SC_CLOSE envoyée à la fenêtre frame de documents. La fermeture d’une fenêtre ferme le document uniquement si c’est la dernière fenêtre de cadre montrant le document. La fermeture du document avec ID_FILE_CLOSE ferme non seulement le document, mais ferme toutes les fenêtres de cadre montrant le document.

  • ID_FILE_SAVE enregistre le document actif.

    L’implémentation utilise une routine CDocument::DoSave d’assistance qui est utilisée pour les deux OnFileSave et OnFileSaveAspour . Si vous enregistrez un document qui n’a pas été enregistré avant (autrement dit, il n’a pas de nom de chemin d’accès, comme dans le cas de FileNew) ou lu à partir d’un document en lecture seule, la OnFileSave logique agit comme la commande ID_FILE_SAVE_AS et demande à l’utilisateur de fournir un nouveau nom de fichier. Le processus réel d’ouverture du fichier et l’enregistrement est effectué via la fonction OnSaveDocumentvirtuelle.

    Il existe deux raisons courantes de personnaliser ID_FILE_SAVE. Pour les documents qui n’enregistrent pas, supprimez simplement les ID_FILE_SAVE boutons de menu et de barre d’outils de votre interface utilisateur. Assurez-vous également que vous n’sale jamais votre document (autrement dit, n’appelez CDocument::SetModifiedFlagjamais) et que l’infrastructure n’entraîne jamais l’enregistrement du document. Pour les documents qui s’enregistrent à un emplacement autre qu’un fichier de disque, définissez une nouvelle commande pour cette opération.

    Dans le cas d’un COleServerDocID_FILE_SAVE est utilisé à la fois pour l’enregistrement de fichiers (pour les documents normaux) et la mise à jour des fichiers (pour les documents incorporés).

    Si vos données de document sont stockées dans des fichiers de disque individuels, mais que vous ne souhaitez pas utiliser l’implémentation sérialiser par défaut CDocument , vous devez remplacer CDocument::OnSaveDocument au lieu de OnFileSave.

  • ID_FILE_SAVE_AS enregistre le document actif sous un autre nom de fichier.

    L’implémentation CDocument::OnFileSaveAs utilise la même CDocument::DoSave routine d’assistance que OnFileSave. La OnFileSaveAs commande est gérée comme ID_FILE_SAVE si les documents n’avaient pas de nom de fichier avant l’enregistrement. COleServerDoc::OnFileSaveAs implémente la logique pour enregistrer un fichier de données de document normal ou pour enregistrer un document serveur représentant un objet OLE incorporé dans une autre application en tant que fichier distinct.

    Si vous personnalisez la logique de ID_FILE_SAVE, vous souhaiterez probablement personnaliser ID_FILE_SAVE_AS de manière similaire ou l’opération « Enregistrer sous » peut ne pas s’appliquer à votre document. Vous pouvez supprimer l’élément de menu de votre barre de menus s’il n’est pas nécessaire.

  • ID_FILE_SAVE_COPY_AS enregistre un document actif de copie sous un nouveau nom.

    L’implémentation COleServerDoc::OnFileSaveCopyAs est très similaire à CDocument::OnFileSaveAs, sauf que l’objet document n’est pas « attaché » au fichier sous-jacent après l’enregistrement. Autrement dit, si le document en mémoire a été « modifié » avant l’enregistrement, il est toujours « modifié ». En outre, cette commande n’a aucun effet sur le nom du chemin d’accès ou le titre stocké dans le document.

  • ID_FILE_UPDATE avertit le conteneur d’enregistrer un document incorporé.

    L’implémentation COleServerDoc::OnUpdateDocument notifie simplement le conteneur que l’incorporation doit être enregistré. Le conteneur appelle ensuite les API OLE appropriées pour enregistrer l’objet incorporé.

  • ID_FILE_PAGE_SETUP appelle une boîte de dialogue de mise en page/mise en page spécifique à l’application.

    Actuellement, il n’existe aucune norme pour cette boîte de dialogue, et l’infrastructure n’a pas d’implémentation par défaut de cette commande.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_FILE_PRINT_SETUP appeler la boîte de dialogue Configuration d’impression standard.

    Remarque

    Vous devez vous connecter à la carte des messages de votre CWinAppclasse dérivée pour activer cette fonctionnalité.

    Cette commande appelle la boîte de dialogue configuration d’impression standard qui permet à l’utilisateur de personnaliser l’imprimante et les paramètres d’impression pour au moins ce document ou au plus tous les documents de cette application. Vous devez utiliser le Panneau de configuration pour modifier les paramètres d’imprimante par défaut pour l’ensemble du système.

    CWinApp::OnFilePrintSetup a une implémentation très simple créant un CPrintDialog objet et appelant la fonction d’implémentation CWinApp::DoPrintDialog . Cela définit la configuration de l’imprimante par défaut de l’application.

    La nécessité courante de personnaliser cette commande consiste à autoriser les paramètres d’imprimante par document, qui doivent être stockés avec le document lors de l’enregistrement. Pour ce faire, vous devez ajouter un gestionnaire de mappage de messages dans votre CDocument classe qui crée un CPrintDialog objet, l’initialise avec les attributs d’imprimante appropriés (généralement hDevMode et hDevNames), appeler le CPrintDialog::DoModal, et enregistrer les paramètres d’imprimante modifiés. Pour une implémentation robuste, vous devez examiner l’implémentation de la détection des CWinApp::DoPrintDialog erreurs et CWinApp::UpdatePrinterSelection pour gérer les paramètres par défaut sensibles et le suivi des modifications d’imprimante à l’échelle du système.

  • ID_FILE_PRINT impression standard du document actif

    Remarque

    Vous devez vous connecter à la carte des messages de votre CViewclasse dérivée pour activer cette fonctionnalité.

    Cette commande imprime le document actif, ou plus correctement, démarre le processus d’impression, ce qui implique l’appel de la boîte de dialogue d’impression standard et l’exécution du moteur d’impression.

    CView::OnFilePrint implémente cette commande et la boucle d’impression principale. Il appelle la machine virtuelle CView::OnPreparePrinting pour inviter l’utilisateur à imprimer la boîte de dialogue. Il prépare ensuite le contrôleur de domaine de sortie pour accéder à l’imprimante, affiche la boîte de dialogue de progression de l’impression (AFX_IDD_PRINTDLG) et envoie l’échappement StartDoc à l’imprimante. CView::OnFilePrint contient également la boucle d’impression orientée page principale. Pour chaque page, elle appelle la virtuelle CView::OnPrepareDC suivie d’une StartPage échappement et appelle la virtuelle CView::OnPrint pour cette page. Une fois terminé, la machine virtuelle CView::OnEndPrinting est appelée et la boîte de dialogue de progression de l’impression est fermée.

    L’architecture d’impression MFC est conçue pour raccorder de nombreuses façons différentes pour l’impression et l’aperçu avant impression. Vous trouverez normalement les différentes CView fonctions substituables adéquates pour toutes les tâches d’impression orientées page. Uniquement dans le cas d’une application qui utilise l’imprimante pour la sortie non orientée page, si vous trouvez la nécessité de remplacer l’implémentation ID_FILE_PRINT.

  • ID_FILE_PRINT_PREVIEW Entrez le mode aperçu avant impression du document actif.

    Remarque

    Vous devez vous connecter à la carte des messages de votre CViewclasse dérivée pour activer cette fonctionnalité.

    CView::OnFilePrintPreview démarre le mode aperçu avant impression en appelant la fonction CView::DoPrintPreviewd’assistance documentée. CView::DoPrintPreview est le moteur principal de la boucle d’aperçu avant impression, tout comme OnFilePrint le moteur principal de la boucle d’impression.

    L’opération d’aperçu avant impression peut être personnalisée de différentes façons en passant différents paramètres à DoPrintPreview. Reportez-vous à la note technique 30, qui décrit certains détails de l’aperçu avant impression et comment la personnaliser.

  • ID_FILE_MRU_FILE1... FILE16 Une plage d’ID de commandes pour la liste MRU fichier.

    CWinApp::OnUpdateRecentFileMenu est un gestionnaire d’interface utilisateur de commande de mise à jour qui est l’une des utilisations les plus avancées du mécanisme de ON_UPDATE_COMMAND_UI. Dans votre ressource de menu, vous n’avez besoin de définir qu’un seul élément de menu avec l’ID ID_FILE_MRU_FILE1. Cet élément de menu reste initialement désactivé.

    À mesure que la liste MRU augmente, d’autres éléments de menu sont ajoutés à la liste. L’implémentation standard est définie par défaut sur la limite standard CWinApp des quatre derniers fichiers utilisés. Vous pouvez modifier la valeur par défaut en appelant CWinApp::LoadStdProfileSettings avec une valeur plus grande ou plus petite. La liste mrU est stockée dans les fichiers de l’application. Fichier INI. La liste est chargée dans la fonction de votre application si vous appelezLoadStdProfileSettings, et est enregistrée lors de InitInstance la fermeture de votre application. Le gestionnaire d’interface utilisateur de la commande MRU met également à jour les chemins absolus en chemins relatifs pour l’affichage dans le menu fichier.

    CWinApp::OnOpenRecentFile est le gestionnaire ON_COMMAND qui exécute la commande réelle. Il obtient simplement le nom du fichier à partir de la liste et des appels CWinApp::OpenDocumentFilemrU, qui effectue tout le travail d’ouverture du fichier et de mise à jour de la liste mrU.

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_EDIT_CLEAR efface la sélection actuelle

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    CEditView fournit une implémentation de cette commande à l’aide CEdit::Clearde . La commande est désactivée s’il n’existe aucune sélection actuelle.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_EDIT_CLEAR_ALL efface l’intégralité du document.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande. Consultez l’exemple de didacticiel MFC SCRIBBLE pour obtenir un exemple d’implémentation.

  • ID_EDIT_COPY Copie la sélection actuelle dans le Presse-papiers.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    CEditView fournit une implémentation de cette commande, qui copie le texte actuellement sélectionné dans le Presse-papiers en tant que CF_TEXT à l’aide CEdit::Copyde . La commande est désactivée s’il n’existe aucune sélection actuelle.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_EDIT_CUT Coupe la sélection actuelle dans le Presse-papiers.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    CEditView fournit une implémentation de cette commande, qui coupe le texte actuellement sélectionné dans le Presse-papiers en tant que CF_TEXT à l’aide CEdit::Cut. La commande est désactivée s’il n’existe aucune sélection actuelle.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_EDIT_FIND Commence l’opération de recherche, affiche la boîte de dialogue rechercher sans mode.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    CEditView fournit une implémentation de cette commande, qui appelle la fonction OnEditFindReplace d’assistance d’implémentation pour utiliser et stocker les paramètres de recherche/remplacement précédents dans les variables d’implémentation privées. La CFindReplaceDialog classe est utilisée pour gérer la boîte de dialogue sans mode pour inviter l’utilisateur.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_EDIT_PASTE Insère le contenu actuel du Presse-papiers.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    CEditView fournit une implémentation de cette commande, qui copie les données du Presse-papiers actuelles en remplaçant le texte sélectionné à l’aide CEdit::Pastede . La commande est désactivée s’il n’existe aucune CF_TEXT dans le Presse-papiers.

    COleClientDoc fournit simplement un gestionnaire d’interface utilisateur de commande de mise à jour pour cette commande. Si le Presse-papiers ne contient pas d’élément/objet OLE incorporé, la commande est désactivée. Vous êtes responsable de l’écriture du gestionnaire de la commande réelle pour effectuer le collage réel. Si votre application OLE peut également coller d’autres formats, vous devez fournir votre propre gestionnaire d’interface utilisateur de commande de mise à jour dans votre affichage ou document (autrement dit, quelque part avant COleClientDoc le routage cible de commande).

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

    Pour remplacer l’implémentation OLE standard, utilisez COleClientItem::CanPaste.

  • ID_EDIT_PASTE_LINK Insère un lien à partir du contenu actuel du Presse-papiers.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    COleDocument fournit simplement un gestionnaire d’interface utilisateur de commande de mise à jour pour cette commande. Si le Presse-papiers ne contient pas d’élément/objet OLE pouvant être lié, la commande est désactivée. Vous êtes responsable de l’écriture du gestionnaire de la commande réelle pour effectuer le collage réel. Si votre application OLE peut également coller d’autres formats, vous devez fournir votre propre gestionnaire d’interface utilisateur de commande de mise à jour dans votre affichage ou document (autrement dit, quelque part avant COleDocument le routage cible de commande).

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

    Pour remplacer l’implémentation OLE standard, utilisez COleClientItem::CanPasteLink.

  • ID_EDIT_PASTE_SPECIAL Insère le contenu actuel du Presse-papiers avec des options.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée. MFC ne fournit pas cette boîte de dialogue.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_EDIT_REPEAT répète la dernière opération.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    CEditView fournit une implémentation de cette commande pour répéter la dernière opération de recherche. Les variables d’implémentation privée pour la dernière recherche sont utilisées. La commande est désactivée si une recherche ne peut pas être tentée.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_EDIT_REPLACE Commence l’opération de remplacement, affiche la boîte de dialogue de remplacement sans mode.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    CEditView fournit une implémentation de cette commande, qui appelle la fonction OnEditFindReplace d’assistance d’implémentation pour utiliser et stocker les paramètres de recherche/remplacement précédents dans les variables d’implémentation privées. La CFindReplaceDialog classe est utilisée pour gérer la boîte de dialogue sans mode qui invite l’utilisateur.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_EDIT_SELECT_ALL Sélectionne l’intégralité du document.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    CEditView fournit une implémentation de cette commande, qui sélectionne tout le texte du document. La commande est désactivée s’il n’y a pas de texte à sélectionner.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_EDIT_UNDO Annuler la dernière opération.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    CEditView fournit une implémentation de cette commande, à l’aide CEdit::Undode . La commande est désactivée si CEdit::CanUndo elle retourne FALSE.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_EDIT_REDO rétablir la dernière opération.

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez implémenter cette opération pour chaque CViewclasse dérivée.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_WINDOW_NEW Ouvre une autre fenêtre sur le document actif.

    CMDIFrameWnd::OnWindowNew implémente cette fonctionnalité puissante à l’aide du modèle de document du document actif pour créer un autre cadre contenant une autre vue du document actif.

    Comme la plupart des commandes de menu de la fenêtre MDI (Document Interface) multiples, la commande est désactivée s’il n’existe aucune fenêtre enfant MDI active.

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée. Si vous souhaitez fournir une commande qui crée des vues ou fenêtres d’images supplémentaires, vous serez probablement mieux d’inventer votre propre commande. Vous pouvez cloner le code à partir de CMDIFrameWnd::OnWindowNew et le modifier dans les classes d’images et d’affichage spécifiques de votre goût.

  • ID_WINDOW_ARRANGE organiser les icônes en bas d’une fenêtre MDI.

    CMDIFrameWnd implémente cette commande MDI standard dans une fonction OnMDIWindowCmdd’assistance d’implémentation. Cet assistance mappe les ID de commande aux messages Windows MDI et peut donc partager beaucoup de code.

    Comme la plupart des commandes du menu Fenêtre MDI, la commande est désactivée s’il n’existe aucune fenêtre enfant MDI active.

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_WINDOW_CASCADE fenêtres Cascades afin qu’elles se chevauchent.

    CMDIFrameWnd implémente cette commande MDI standard dans une fonction OnMDIWindowCmdd’assistance d’implémentation. Cet assistance mappe les ID de commande aux messages Windows MDI et peut donc partager beaucoup de code.

    Comme la plupart des commandes du menu Fenêtre MDI, la commande est désactivée s’il n’existe aucune fenêtre enfant MDI active.

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_WINDOW_TILE_HORZ fenêtres Vignettes horizontalement.

    Cette commande est implémentée comme CMDIFrameWnd ID_WINDOW_CASCADE, sauf qu’un autre message Windows MDI est utilisé pour l’opération.

    Vous devez choisir l’orientation par défaut des vignettes pour votre application. Pour ce faire, modifiez l’ID de l’élément de menu « Vignette » de la fenêtre en ID_WINDOW_TILE_HORZ ou ID_WINDOW_TILE_VERT.

  • ID_WINDOW_TILE_VERT fenêtres Vignettes verticalement.

    Cette commande est implémentée comme CMDIFrameWnd ID_WINDOW_CASCADE, sauf qu’un autre message Windows MDI est utilisé pour l’opération.

    Vous devez choisir l’orientation par défaut des vignettes pour votre application. Pour ce faire, modifiez l’ID de l’élément de menu « Vignette » de la fenêtre en ID_WINDOW_TILE_HORZ ou ID_WINDOW_TILE_VERT.

  • ID_WINDOW_SPLIT interface clavier pour fractionner.

    CView gère cette commande pour l’implémentation CSplitterWnd . Si la vue fait partie d’une fenêtre de fractionnement, cette commande délègue à la fonction CSplitterWnd::DoKeyboardSplitd’implémentation. Cela place le séparateur dans un mode qui permet aux utilisateurs du clavier de fractionner ou de désélitter une fenêtre de fractionnement.

    Cette commande est désactivée si la vue n’est pas dans un séparateur.

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_APP_ABOUT appelle la boîte de dialogue À propos.

    Il n’existe aucune implémentation standard pour la zone À propos d’une application. L’application créée par défaut AppWizard crée une classe de boîte de dialogue personnalisée pour votre application et l’utilise comme zone About. AppWizard écrit également le gestionnaire de commandes trivial qui gère cette commande et appelle la boîte de dialogue.

    Vous allez presque toujours implémenter cette commande.

  • ID_APP_EXIT quitter l’application.

    CWinApp::OnAppExit gère cette commande en envoyant un message WM_CLOSE à la fenêtre principale de l’application. L’arrêt standard de l’application (invite à sale fichiers, et ainsi de suite) est géré par l’implémentationCFrameWnd.

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée. CWinApp::SaveAllModified La substitution ou la CFrameWnd logique de fermeture est recommandée.

    Si vous choisissez d’implémenter cette commande, nous vous recommandons d’utiliser cet ID de commande.

  • ID_HELP_INDEX Répertorie les rubriques d’aide de . Fichier HLP.

    Remarque

    Vous devez vous connecter à la carte des messages de votre CWinAppclasse dérivée pour activer cette fonctionnalité.

    CWinApp::OnHelpIndex gère cette commande en appelant CWinApp::WinHelptrivialement .

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_HELP_USING Affiche de l’aide sur l’utilisation de l’aide.

    Remarque

    Vous devez vous connecter à la carte des messages de votre CWinAppclasse dérivée pour activer cette fonctionnalité.

    CWinApp::OnHelpUsing gère cette commande en appelant CWinApp::WinHelptrivialement .

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_CONTEXT_HELP entre le mode d’aide MAJ-F1.

    Remarque

    Vous devez vous connecter à la carte des messages de votre CWinAppclasse dérivée pour activer cette fonctionnalité.

    CWinApp::OnContextHelp gère cette commande en définissant le curseur du mode d’aide, en entrant une boucle modale et en attendant que l’utilisateur sélectionne une fenêtre pour obtenir de l’aide. Pour plus d’informations sur l’implémentation de l’aide MFC, consultez la note technique 28 .

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_HELP donne de l’aide sur le contexte actuel

    Remarque

    Vous devez vous connecter à la carte des messages de votre CWinAppclasse dérivée pour activer cette fonctionnalité.

    CWinApp::OnHelp gère cette commande en obtenant le contexte d’aide approprié pour le contexte d’application actuel. Cela gère l’aide F1 simple, l’aide sur les boîtes de message, et ainsi de suite. Pour plus d’informations sur l’implémentation de l’aide du MFC, reportez-vous à la Note technique 28 .

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_DEFAULT_HELP Affiche l’aide par défaut pour le contexte

    Remarque

    Vous devez vous connecter à la carte des messages de votre CWinAppclasse dérivée pour activer cette fonctionnalité.

    Cette commande est généralement mappée à CWinApp::OnHelpIndex.

    Un autre gestionnaire de commandes peut être fourni si une distinction entre l’aide par défaut et l’index d’aide est souhaitée.

  • ID_NEXT_PANE Passe au volet suivant

    CView gère cette commande pour l’implémentation CSplitterWnd . Si la vue fait partie d’une fenêtre de fractionnement, cette commande délègue à la fonction CSplitterWnd::OnNextPaneCmdd’implémentation. Cette opération déplace l’affichage actif vers le volet suivant dans le séparateur.

    Cette commande est désactivée si la vue n’est pas dans un séparateur ou qu’il n’y a pas de volet suivant à accéder.

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_PREV_PANE Passe au volet précédent

    CView gère cette commande pour l’implémentation CSplitterWnd . Si la vue fait partie d’une fenêtre de fractionnement, cette commande délègue à la fonction CSplitterWnd::OnNextPaneCmdd’implémentation. Cette opération déplace l’affichage actif vers le volet précédent dans le séparateur.

    Cette commande est désactivée si l’affichage n’est pas dans un séparateur ou qu’il n’y a pas de volet précédent à accéder.

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_OLE_INSERT_NEW Insère un nouvel objet OLE

    Actuellement, il n’existe aucune implémentation standard pour cette commande. Vous devez l’implémenter pour votre CViewclasse dérivée pour insérer un nouvel élément/objet OLE à la sélection actuelle.

    Toutes les applications clientes OLE doivent implémenter cette commande. AppWizard, avec l’option OLE, crée une implémentation squelette de OnInsertObject dans votre classe d’affichage que vous devrez terminer.

    Consultez l’exemple OCLIENT MFC pour obtenir une implémentation complète de cette commande.

  • ID_OLE_EDIT_LINKS Modifier les liens OLE

    COleDocument gère cette commande à l’aide de l’implémentation fournie par MFC de la boîte de dialogue de liens OLE standard. L’implémentation de cette boîte de dialogue est accessible via la COleLinksDialog classe. Si le document actif ne contient aucun lien, la commande est désactivée.

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_OLE_VERB_FIRST... LAST An ID range for OLE verbs

    COleDocument utilise cette plage d’ID de commande pour les verbes pris en charge par l’élément/objet OLE actuellement sélectionné. Il doit s’agir d’une plage, car un type d’élément/objet OLE donné peut prendre en charge zéro ou plusieurs verbes personnalisés. Dans le menu de votre application, vous devez disposer d’un élément de menu avec l’ID de ID_OLE_VERB_FIRST. Lorsque le programme est exécuté, le menu est mis à jour avec la description appropriée du verbe de menu (ou menu contextuel avec de nombreux verbes). La gestion du menu OLE est gérée par AfxOleSetEditMenu, effectuée dans le gestionnaire d’interface utilisateur de commande de mise à jour pour cette commande.

    Il n’existe aucun gestionnaire de commandes explicite pour la gestion de chacun des ID de commande de cette plage. COleDocument::OnCmdMsg est substitué pour intercepter tous les ID de commande dans cette plage, les transformer en nombres de verbes de base zéro et lancer le serveur pour ce verbe (à l’aide COleClientItem::DoVerb).

    La personnalisation ou toute autre utilisation de cette plage d’ID de commande n’est pas recommandée.

  • ID_VIEW_TOOLBAR activer et désactiver la barre d’outils

    CFrameWnd gère cette commande et le gestionnaire d’interface utilisateur update-command pour basculer l’état visible de la barre d’outils. La barre d’outils doit être une fenêtre enfant du cadre avec l’ID de fenêtre enfant de AFX_IDW_TOOLBAR. Le gestionnaire de commandes bascule en fait la visibilité de la fenêtre de barre d’outils. CFrameWnd::RecalcLayout est utilisé pour redessiner la fenêtre frame avec la barre d’outils dans son nouvel état. Le gestionnaire d’interface utilisateur de la commande de mise à jour case activée l’élément de menu lorsque la barre d’outils est visible.

    La personnalisation de ce gestionnaire de commandes n’est pas recommandée. Si vous souhaitez ajouter des barres d’outils supplémentaires, vous souhaiterez cloner et modifier le gestionnaire de commandes et le gestionnaire d’interface utilisateur update-command pour cette commande.

  • ID_VIEW_STATUS_BAR activer et désactiver la barre d’état

    Cette commande est implémentée comme CFrameWnd ID_VIEW_TOOLBAR, à l’exception d’un AUTRE ID de fenêtre enfant (AFX_IDW_STATUS_BAR) est utilisé.

Gestionnaires de commandes Update-Only

Plusieurs ID de commande standard sont utilisés comme indicateurs dans les barres d’état. Ils utilisent le même mécanisme de gestion de l’interface utilisateur de commande de mise à jour pour afficher leur état visuel actuel pendant le temps d’inactivité de l’application. Étant donné qu’ils ne peuvent pas être sélectionnés par l’utilisateur (autrement dit, vous ne pouvez pas envoyer (push) un volet de barre d’état), il n’est pas judicieux d’avoir un gestionnaire de ON_COMMAND pour ces ID de commande.

  • ID_INDICATOR_CAPS : indicateur de verrouillage CAP.

  • ID_INDICATOR_NUM : indicateur de verrouillage NUM.

  • ID_INDICATOR_SCRL : indicateur de verrouillage SCRL.

  • ID_INDICATOR_KANA : indicateur de verrouillage KANA (applicable uniquement aux systèmes japonais).

Ces trois éléments sont implémentés dans CFrameWnd::OnUpdateKeyIndicator, un assistance d’implémentation qui utilise l’ID de commande pour mapper à la clé virtuelle appropriée. Une implémentation courante active ou désactive (pour les volets d’état désactivés = aucun texte) l’objet CCmdUI selon que la clé virtuelle appropriée est actuellement verrouillée.

La personnalisation de ce gestionnaire de commandes n’est pas recommandée.

  • ID_INDICATOR_EXT : indicateur de sélection EXTended.

  • ID_INDICATOR_OVR : indicateur OVeRstrike.

  • ID_INDICATOR_REC : indicateur RECording.

Actuellement, il n’existe aucune implémentation standard pour ces indicateurs.

Si vous choisissez d’implémenter ces indicateurs, nous vous recommandons d’utiliser ces ID d’indicateur et de maintenir l’ordre des indicateurs dans votre barre d’état (autrement dit, dans cet ordre : EXT, CAP, NUM, SCRL, OVR, REC).

Voir aussi

Notes techniques par numéro
Notes techniques par catégorie