Share via


TN022 : La norme commande l'implémentation

[!REMARQUE]

La note technique suivante n'a pas été modifiée depuis si c'était première inclus dans la documentation en ligne.Par conséquent, certaines procédures et rubriques peuvent être obsolètes ou incorrects.Pour obtenir les informations les plus récentes, il est recommandé que vous trouviez la rubrique d'intérêt dans l'index de la documentation en ligne.

Cette remarque décrit les implémentations standard de commande fournies par les MFC 2,0.Lecture note technique 21 d'abord car elle décrit les mécanismes utilisés pour implémenter plusieurs des commandes standard.

Cette description suppose une connaissance des architectures MFC, des API, et de la pratique en matière de programmation courants.Les API documentées ainsi que pas documentées de « implémentation uniquement » sont décrites.Ce n'est pas un point de départ pour se familiariser sur les fonctionnalités de ou comment programmer dans MFC.Reportez -vous à Visual C++ pour des informations générales et pour les détails des API documentées.

Le problème

MFC définit beaucoup d'ID de commande standard dans le fichier d'en-tête AFXRES.H.La prise en charge l'infrastructure de ces commandes varie.Connaître où et comment les classes d'infrastructure gèrent ces commandes vous montrent non seulement comment l'infrastructure fonctionne en interne mais fournit des informations utiles sur la personnalisation des implémentations standard et vous enseigner 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 :

  • Le titre : le nom symbolique de l'ID de commande (par exemple, ID_FILE_SAVE) suivi du but de la commande (par exemple, « enregistre le document actif ») séparé par un signe deux-points.

  • Décrire d'un ou plusieurs paragraphes les classes implémentent la commande, et ce que l'implémentation par défaut fait

La plupart des implémentations par défaut de commande sont précablées dans la table des messages de la classe de base de l'infrastructure.Il existe quelques implémentations de commande qui requièrent la connexion explicite dans votre classe dérivée.Ceux-ci sont décrits dans la « notes ».Si vous avez choisi les bonnes options dans AppWizard, ces gestionnaires par défaut sont connectés pour vous dans l'application squelette générée.

Convention d'affectation de noms

Les commandes standard suivent une convention d'affectation de noms simple que nous vous recommandons utilisez si possible.La plupart des commandes standard sont situées dans les emplacements standard dans la barre de menus d'une application.Le nom symbolique démarre de commande avec « ID_ » suivi du nom de menu contextuel standard, suivi par le nom de l'élément de menu.Le nom symbolique est en majuscules avec les divisions les mots de trait de soulignement.Pour les commandes qui n'ont pas standard l'élément de menu un nom, un nom de commande logique est défini commencer par « ID_ » (par exemple, ID_NEXT_PANE).

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

Nous vous recommandons utilisons préfixe du standard « IDM_ » pour les éléments de menu qui ne suivent pas l'architecture de commande et n'ont pas besoin de code de menu-détail afin d'activer et de désactiver.Naturellement le numéro du menu les commandes que spécifiques doivent être petites depuis le suivi de l'architecture de commande MFC non seulement rend des gestionnaires de commandes plus puissants (puisqu'ils fonctionneront avec des barres d'outils) mais rend le code du gestionnaire de commandes réutilisable.

Plages d'ID

Reportez -vous à note technique 20 pour plus d'informations sur l'utilisation des plages d'ID dans MFC.

Les commandes MFC standard font partie de la plage 0xE000 à 0xEFFF. Ne comptez pas sur les valeurs spécifiques de ces identificateurs étant donné qu'ils sont soumis à modification dans les versions ultérieures 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 standard de ligne de message qui peut être trouvée dans le fichier PROMPTS.RC.L'ID de chaîne pour cette invite de menu doit être le même que l'ID de commande

  • ID_FILE_NEW crée un nouveau/vide le document.

    [!REMARQUE]

    Vous devez vous connecter à votre CWinApp- la table des messages de classe dérivée pour activer cette fonctionnalité.

    CWinApp::OnFileNew implémente cette commande différemment selon le nombre de modèles de document dans l'application.S'il n'existe qu'un CDocTemplate, CWinApp::OnFileNew créera un nouveau document de ce type, ainsi que le frame et la classe d'affichage appropriés.

    S'il existe plusieurs CDocTemplate, CWinApp::OnFileNew invite l'utilisateur à un dialogue (AFX_IDD_NEWTYPEDLG) les permettant de sélectionner le type de document à utiliser.CDocTemplate sélectionné est utilisé pour créer le document.

    Une personnalisation courante d' ID_FILE_NEW est de fournir un tableau différent et plus graphique des types de document.Dans ce cas vous pouvez implémenter votre propre CMyApp::OnFileNew et le placer dans votre table des messages au lieu d' CWinApp::OnFileNew.Il n'y a aucun besoin d'appeler l'implémentation de la classe de base.

    Une autre personnalisation courante d' ID_FILE_NEW est de fournir une commande séparée 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 à votre CWinApp- la table des messages de classe dérivée pour activer cette fonctionnalité.

    CWinApp::OnFileOpen a une implémentation très simple d'appeler CWinApp::DoPromptFileName suivi d' CWinApp::OpenDocumentFile avec le fichier ou le nom de chemin d'accès du fichier à ouvrir.L'implémentation DoPromptFileName courante d' CWinApp apporte la boîte de dialogue standard de FileOpen et le remplit avec les extensions de fichier obtenues à partir de les modèles de document en cours.

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

  • ID_FILE_CLOSE ferme actuellement le document ouvert.

    CDocument::OnFileClose appelle CDocument::SaveModified inviter l'utilisateur à enregistrer le document s'il a été modifié puis appelle OnCloseDocument.Toute la logique fermante, notamment détruire le document, est effectuée dans la routine d' OnCloseDocument .

    [!REMARQUE]

    Les agit d'ID_FILE_CLOSE différemment d'un message d' WM_CLOSE ou d'une commande de système de SC_CLOSE les envoyés à la fenêtre frame de document.Fermer une fenêtre se ferme le document uniquement s'il s'agit de la dernière fenêtre frame affichant le document.Fermer le document avec ID_FILE_CLOSE non seulement ferme le document mais ferme toutes les fenêtres frames affichant le document.

  • ID_FILE_SAVE enregistre le document actif.

    L'implémentation utilise un programme d'assistance CDocument::DoSave actif qui est utilisé pour OnFileSave et OnFileSaveAs.Si vous enregistrez un document lequel n'a pas été enregistré auparavant (autrement dit, il n'a pas un nom de chemin d'accès, comme dans le cas de FileNew) ou lequel a été lu d'un document en lecture seule, la logique d' OnFileSave agit comme la commande d' ID_FILE_SAVE_AS et demandera à l'utilisateur de fournir un nouveau nom de fichier.Le processus effectif d'ouvrir le fichier et effectuez l'enregistrement s'effectue via la fonction virtuelle OnSaveDocument.

    Il existe deux raisons courantes de personnaliser ID_FILE_SAVE.Pour les documents qui n'enregistrent pas, supprimez simplement les éléments de menu et la barre d'outils d' ID_FILE_SAVE de votre interface utilisateur.Assurez -vous également que vous jamais modifiée votre document (autrement dit, n'appelez jamais CDocument::SetModifiedFlag) et l'infrastructure n'entraîne jamais le document à enregistrer.Pour les documents qui permettent à un emplacement autre que le fichier sur disque, définissez une nouvelle commande pour cette opération.

    Dans le cas de COleServerDoc, ID_FILE_SAVE est utilisé pour la sauvegarde de fichier (pour les documents normales) et la mise à jour de fichiers (pour les documents incorporés).

    Si vos données de document sont stockées dans des fichiers sur disque, mais vous ne souhaitez pas utiliser CDocument par défaut sérialisez l'implémentation, vous devez substituer CDocument::OnSaveDocument au lieu d' OnFileSave.

  • ID_FILE_SAVE_AS enregistre le document actif sous un nom différent.

    l'implémentation de CDocument::OnFileSaveAs utilise la même routine d'assistance de CDocument::DoSave qu' OnFileSave.L'ordre d' OnFileSaveAs 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 normal de document ou pour enregistrer un document serveur qui représente un objet OLE incorporé dans une autre application en tant que fichier séparé.

    Si vous personnalisez la logique d' ID_FILE_SAVE, vous voudrez probablement personnaliser ID_FILE_SAVE_AS de la même façon ou l'opération de « sauvegarde comme » ne peut pas s'appliquer à votre document.Vous pouvez supprimer l'élément de menu de votre barre de menus si elle n'est pas nécessaire.

  • ID_FILE_SAVE_COPY_AS enregistre dans une copie le document actif sous un nouveau nom.

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

  • ID_FILE_UPDATE informe le conteneur d'enregistrer un document incorporé.

    D' COleServerDoc::OnUpdateDocument d'implémentation des notifiies simplement le conteneur que l'incorporation doit être inscrite.Le conteneur appelle ensuite les OLE API appropriées afin d'enregistrer l'objet incorporé.

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

    Actuellement il n'y a pas de 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 utilisons cet ID de commande

  • ID_FILE_PRINT_SETUP appellent le dialogue standard de configuration de l'impression.

    [!REMARQUE]

    Vous devez vous connecter à votre CWinApp- la table des messages de classe dérivée pour activer cette fonctionnalité.

    Cette commande appelle la boîte de dialogue standard de configuration de l'impression qui permet à l'utilisateur de personnaliser les paramètres d'impression et 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 du système entier.

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

    Le besoin courant pour personnaliser cette commande est de tenir compte des paramètres d'impression de par-document, qui doivent être enregistrés avec le document une fois journalisés.Pour ce faire que vous devez ajouter un gestionnaire de table des messages dans votre classe de CDocument qui crée un objet d' CPrintDialog , l'initialise avec les attributs appropriés d'imprimante (généralement hDevMode et hDevNames), appelez CPrintDialog::DoModal, et enregistrez les paramètres d'impression modifiés.Pour une implémentation fiable, vous devez surveiller l'implémentation de CWinApp::DoPrintDialog pour détecter des erreurs et CWinApp::UpdatePrinterSelection pour traiter les valeurs par défaut logique et suivre les modifications apportées à l'échelle de le système d'imprimante.

  • Impression standard d'ID_FILE_PRINT du document actif

    [!REMARQUE]

    Vous devez vous connecter à votre CView- la table des messages de classe dérivée pour activer cette fonctionnalité.

    Cette commande imprime le document actif, ou plus correctement, démarre le processus d'impression, consiste à appeler la boîte de dialogue et exécutée standard d'impression le moteur d'impression.

    CView::OnFilePrint implémente cette commande et la boucle principale d'impression.Il appelle CView::OnPreparePrinting virtuel à l'invite de l'utilisateur dans la boîte de dialogue d'impression.Il prépare la sortie contrôleur de domaine passer à l'imprimante, applique la boîte de dialogue de progression d'impression (AFX_IDD_PRINTDLG), et envoie l'échappement d' StartDoc à l'imprimante.CView::OnFilePrint contient également la boucle page-orientée par principal d'impression.Pour chaque page, il appelle CView::OnPrepareDC virtuel suivi d'une échappement d' StartPage et d'appeler CView::OnPrint virtuel pour cette page.Lorsque vous avez terminé, CView::OnEndPrinting virtuel est appelé, et la boîte de dialogue de progression d'impression est fermé.

    MFC impression l'architecture est conçu pour raccorder de différentes façons d'impression et aperçu avant impression.Vous trouverez normalement les différentes fonctions substituables d' CView adéquates pour toutes les tâches imprimantes orientée.Uniquement dans le cas d'une application qui utilise l'imprimante pour la sortie orientée par page, si vous recherchez le besoin de remplacer l'implémentation d' ID_FILE_PRINT .

  • ID_FILE_PRINT_PREVIEW entrée mode aperçu avant impression pour le document actif.

    [!REMARQUE]

    Vous devez vous connecter à votre CView- la table des messages de classe dérivée pour activer cette fonctionnalité.

    CView::OnFilePrintPreview commence mode aperçu avant impression en appelant la fonction d'assistance documentée CView::DoPrintPreview.CView::DoPrintPreview est le moteur principal pour la boucle d'aperçu avant impression, comme OnFilePrint est le moteur principal pour la boucle d'impression.

    L'opération d'aperçu avant impression peut être personnalisée de diverses manières en passant des paramètres à DoPrintPreview. Reportez -vous à note technique 30, qui décrit certains détails de l'aperçu avant impression et comment le personnaliser.

  • Plage d'ID_FILE_MRU_FILE1…**FILE16   **A des ID de commandes pour le fichier MRU list.

    CWinApp::OnUpdateRecentFileMenu est un gestionnaire d'interface utilisateur de commande de mise à jour qui est l'une des utilisations avancées du mécanisme d' ON_UPDATE_COMMAND_UI .Dans votre ressource menu, vous ne devez définir un élément de menu unique avec l'ID ID_FILE_MRU_FILE1.Que l'élément de menu reste initialement désactivé.

    Lorsque la liste des fichiers récents grandit, d'autres éléments de menu sont ajoutés à la liste.L'implémentation d' CWinApp standard correspond par défaut à la limite standard des quatre derniers fichiers utilisés.Vous pouvez modifier la valeur par défaut en appelant CWinApp::LoadStdProfileSettings avec une plus grande ou plus petite valeur.La liste des fichiers récents sont stockées dans le fichier INI de l'application.La liste est chargée dans la fonction d' InitInstance de votre application si vous appelez LoadStdProfileSettings, et stockée lorsque votre application s'arrête.Le gestionnaire d'interface utilisateur de commande de mise à jour de MRU également convertira des chemins d'accès absolus aux chemins d'accès relatif pour l'affichage dans le menu fichier.

    CWinApp::OnOpenRecentFile est le gestionnaire d' ON_COMMAND qui exécute la commande réelle.Il obtient simplement le nom de fichier de la liste des fichiers récents et appelle CWinApp::OpenDocumentFile, qui exécute tout le travail d'ouvrir le fichier et mettre à jour la liste des fichiers récents.

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

  • ID_EDIT_CLEAR désactive 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 de.

    CEditView fournit une implémentation de cette commande à l'aide de CEdit::Clear.La commande est désactivée s'il n'y a aucune sélection actuelle.

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commande

  • ID_EDIT_CLEAR_ALL désactive le document entier.

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

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commandeVoir à MFC l'exemple d'instruction SCRIBBLE pour obtenir un exemple d'implémentation.

  • ID_EDIT_COPY copier 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 de.

    CEditView fournit une implémentation de cette commande, qui copie actuellement le texte sélectionné dans le presse-papiers comme CF_TEXT à l'aide de CEdit::Copy.La commande est désactivée s'il n'y a aucune sélection actuelle.

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commande

  • ID_EDIT_CUT fractionne 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 de.

    CEditView fournit une implémentation de cette commande, qui couper actuellement le texte sélectionné dans le presse-papiers comme CF_TEXT à l'aide de CEdit::Cut.La commande est désactivée s'il n'y a aucune sélection actuelle.

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commande

  • ID_EDIT_FIND commence l'opération de recherche, applique la boîte de dialogue non modale de recherche.

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

    CEditView fournit une implémentation de cette commande, qui appelle la fonction d'assistance OnEditFindReplace d'implémentation au magasin d'utiliser et la recherche précédente/remplace les paramètres dans les variables privées d'implémentation.La classe d' CFindReplaceDialog est utilisée pour gérer la boîte de dialogue non modale pour inviter l'utilisateur.

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons 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 de.

    CEditView fournit une implémentation de cette commande, qui copie les données du Presse-papiers actuelles remplaçant le texte sélectionné à l'aide de CEdit::Paste.La commande est désactivée s'il n'y a aucun CF_TEXT dans le presse-papiers.

    COleClientDoc fournit un seul gestionnaire d'interface utilisateur de commande de mise à jour pour cette commande.Si le presse-papiers ne contient pas d'élément OLE/objet encastrables, la commande est désactivée.Vous êtes chargé d'écrire le gestionnaire pour la commande réelle fasse coller réel.Si votre application OLE peut également coller dans d'autres formats, vous devez fournir votre propre gestionnaire d'interface utilisateur de commande de mise à jour dans votre vue ou le document (autrement dit, une valeur avant COleClientDoc dans le routage de cible de commande).

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commande

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

  • ID_EDIT_PASTE_LINK insère un lien 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 de.

    COleDocument fournit un seul gestionnaire d'interface utilisateur de commande de mise à jour pour cette commande.Si le presse-papiers ne contient pas l'élément OLE/objet liables, la commande est désactivée.Vous êtes chargé d'écrire le gestionnaire pour la commande réelle fasse coller réel.Si votre application OLE peut également coller dans d'autres formats, vous devez fournir votre propre gestionnaire d'interface utilisateur de commande de mise à jour dans votre vue ou le document (autrement dit, une valeur avant COleDocument dans le routage de cible de commande).

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commande

    Pour remplacer OLE implémentation 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 de.MFC ne fournit pas cette boîte de dialogue.

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons 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 de.

    CEditView fournit une implémentation de cette commande de répéter la dernière opération de recherche.Les variables privées d'implémentation 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 utilisons cet ID de commande

  • ID_EDIT_REPLACE commence l'opération de remplacement, place le non modale remplace la boîte de dialogue.

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

    CEditView fournit une implémentation de cette commande, qui appelle la fonction d'assistance OnEditFindReplace d'implémentation au magasin d'utiliser et la recherche précédente/remplace les paramètres dans les variables privées d'implémentation.La classe d' CFindReplaceDialog est utilisée pour gérer la boîte de dialogue non modale qui invite l'utilisateur.

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commande

  • ID_EDIT_SELECT_ALL sélectionne le document entier.

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

    CEditView fournit une implémentation de cette commande, qui sélectionne tout le texte dans le document.La commande est désactivée si aucun texte à sélectionner.

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commande

  • ID_EDIT_UNDO annule 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 de.

    CEditView fournit une implémentation de cette commande, à CEdit::Undo.La commande est désactivée si CEdit::CanUndo retourne FALSE.

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commande

  • ID_EDIT_REDO rétablit 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 de.

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commande

  • ID_WINDOW_NEW ouvre une autre fenêtre du document actif.

    CMDIFrameWnd::OnWindowNew implémente cette fonctionnalité puissante à l'aide de le modèle de document du document actif pour créer un autre frame qui contient une autre vue du document actif.

    Comme la plupart des commandes (MDI) de menu Fenêtre d'interface multidocument, la commande est désactivée s'il n'y a pas de fenêtres enfants 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 supplémentaires ou des fenêtres frame, vous serez probablement plus aisé inventant votre propre commande.Vous pouvez cloner code de CMDIFrameWnd::OnWindowNew et le modifier au frame et aux classes d'affichage spécifiques de votre aimer.

  • ID_WINDOW_ARRANGE réorganise des icônes en bas d'une fenêtre MDI.

    CMDIFrameWnd implémente cette commande standard MDI dans une fonction d'assistance OnMDIWindowCmdd'implémentation.Ce programme d'assistance mappe les ID de commande aux messages des fenêtres MDI et peut donc partager beaucoup de code.

    Comme la plupart des commandes de menu Fenêtre MDI, la commande est désactivée s'il n'y a pas de fenêtres enfants MDI active.

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

  • ID_WINDOW_CASCADE s'affiche en cascade windows afin qu'ils chevauchent.

    CMDIFrameWnd implémente cette commande standard MDI dans une fonction d'assistance OnMDIWindowCmdd'implémentation.Ce programme d'assistance mappe les ID de commande aux messages des fenêtres MDI et peut donc partager beaucoup de code.

    Comme la plupart des commandes de menu Fenêtre MDI, la commande est désactivée s'il n'y a pas de fenêtres enfants MDI active.

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

  • Fenêtres de mosaïques d'ID_WINDOW_TILE_HORZ horizontalement.

    Cette commande est implémentée dans CMDIFrameWnd comme ID_WINDOW_CASCADE, à moins qu'un autre message de fenêtres MDI est utilisé pour une opération.

    Vous devez choisir l'orientation par défaut de la mosaïque pour votre application.Vous pouvez modifier l'ID de l'élément de menu « mosaic » à ID_WINDOW_TILE_HORZ ou à ID_WINDOW_TILE_VERT.

  • Fenêtres de mosaïques d'ID_WINDOW_TILE_VERT verticalement.

    Cette commande est implémentée dans CMDIFrameWnd comme ID_WINDOW_CASCADE, à moins qu'un autre message de fenêtres MDI est utilisé pour une opération.

    Vous devez choisir l'orientation par défaut de la mosaïque pour votre application.Vous pouvez modifier l'ID de l'élément de menu « mosaic » à ID_WINDOW_TILE_HORZ ou à ID_WINDOW_TILE_VERT.

  • Interface de clavier à ID_WINDOW_SPLIT au séparateur.

    CView gère cette commande pour l'implémentation d' CSplitterWnd .Si la vue fait partie d'une fenêtre fractionnée, cette commande la délèguera à la fonction CSplitterWnd::DoKeyboardSplitd'implémentation.Cela ajoutera le séparateur dans un mode qui permettra aux utilisateurs de clavier au fractionnement ou à l'unsplit une fenêtre fractionnée.

    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 about.

    Il n'existe aucune implémentation standard pour une application à propos de zone.L'application AppWizard-créée par défaut crée une classe de boîte de dialogue personnalisée pour votre application et utilisera en tant que environ zone.AppWizard écrira également le gestionnaire de commandes simple qui gère cette commande et appelle la boîte de dialogue.

    Vous implémenterez presque toujours cette commande.

  • Sortie d'ID_APP_EXIT l'application.

    CWinApp::OnAppExit gère cette commande en envoyant un message d' WM_CLOSE à la fenêtre principale de l'application.L'arrêt standard de l'application (invite concernant les fichiers modifiés etc.) est traité par l'implémentation d' CFrameWnd .

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

    Si vous choisissez d'implémenter cette commande, nous vous recommandons utilisons cet ID de commande

  • ID_HELP_INDEX répertorie des rubriques d'aide à partir de fichier de .HLP.

    [!REMARQUE]

    Vous devez vous connecter à votre CWinApp- la table des messages de classe dérivée pour activer cette fonctionnalité.

    CWinApp::OnHelpIndex gère cette commande en appelant trivialement CWinApp::WinHelp.

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

  • Les affichages d'ID_HELP_USING aident sur l'utilisation de l'aide.

    [!REMARQUE]

    Vous devez vous connecter à votre CWinApp- la table des messages de classe dérivée pour activer cette fonctionnalité.

    CWinApp::OnHelpUsing gère cette commande en appelant trivialement CWinApp::WinHelp.

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

  • ID_CONTEXT_HELP entre le mode d'aide SHIFT-F1.

    [!REMARQUE]

    Vous devez vous connecter à votre CWinApp- la table des messages de classe dérivée pour activer cette fonctionnalité.

    CWinApp::OnContextHelp gère cette commande en définissant le curseur d'aide en mode, en écrivant une boucle modale et en attendant l'utilisateur de sélectionner une fenêtre pour réussir l'aide. Reportez -vous à note technique 28 pour plus d'informations sur l'implémentation d'aide MFC.

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

  • ID_HELP donne l'aide sur le contexte actuel

    [!REMARQUE]

    Vous devez vous connecter à votre CWinApp- la table des messages de classe dérivée pour activer cette fonctionnalité.

    CWinApp::OnHelp gère cette commande en obtenant le bon contexte d'aide pour le contexte actuel d'application.Ce gère l'aide F1 simple, une aide sur les messages et ainsi de suite. Reportez -vous à note technique 28 pour plus d'informations sur l'implémentation d'aide MFC.

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

  • Utilisation de valeur par défaut de l'ID_DEFAULT_HELP pour le contexte

    [!REMARQUE]

    Vous devez vous connecter à votre CWinApp- la table des messages de classe dérivée pour activer cette fonctionnalité.

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

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

  • ID_NEXT_PANE accède au volet suivant

    CView gère cette commande pour l'implémentation d' CSplitterWnd .Si la vue fait partie d'une fenêtre fractionnée, cette commande la délèguera à la fonction CSplitterWnd::OnNextPaneCmdd'implémentation.Cela se déplace la vue active au volet suivant dans le séparateur.

    Cette commande est désactivée si la vue ne se trouve pas dans un séparateur ou il n'existe aucun volet suivant vers laquelle naviguer.

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

  • ID_PREV_PANE accède au volet précédent

    CView gère cette commande pour l'implémentation d' CSplitterWnd .Si la vue fait partie d'une fenêtre fractionnée, cette commande la délèguera à la fonction CSplitterWnd::OnNextPaneCmdd'implémentation.Cela se déplace la vue active au volet précédent du séparateur.

    Cette commande est désactivée si la vue ne se trouve pas dans un séparateur ou il n'existe aucun volet précédent vers laquelle naviguer.

    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 implémenter cette opération pour votre CViewclasse dérivée pour insérer un nouvel élément OLE/objet à la sélection actuelle.

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

    Consultez l'exemple d' OCLIENT d'exemple de liaison et incorporation d'objets MFC pour une implémentation complète de cette commande.

  • ID_OLE_EDIT_LINKS modifie de liens OLE

    COleDocument gère cette commande à l'aide de la fourni l'implémentation du OLE dialogue standard de liens.L'implémentation de ce dialogue via la classe d' COleLinksDialog .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… DERNIER une plage d'ID pour OLE de verbes

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

    Il n'y a aucun gestionnaire de commandes explicite pour gérer chacun de l'ID de commande dans cet intervalle.COleDocument::OnCmdMsg est substituée pour intercepter les ID de commande dans cette plage, pour les traiter en nombres de base zéro de verbe, et pour exécuter le serveur pour ce verbe (à l'aide de COleClientItem::DoVerb).

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

  • ID_VIEW_TOOLBAR bascule la barre d'outils et désactivation

    CFrameWnd gère cette commande et gestionnaire de la mise à jour-commande interface utilisateur de basculer l'état visible de la barre d'outils.La barre d'outils doit avoir une fenêtre enfant du frame avec l'ID de fenêtre enfant d' 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 à son nouvel état.Le gestionnaire de la mise à jour-commande interface utilisateur active 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 pouvez cloner et modifier le gestionnaire de commandes et le gestionnaire de la mise à jour-commande interface utilisateur pour cette commande.

  • ID_VIEW_STATUS_BAR bascule la barre d'état et désactivation

    Cette commande est implémentée dans CFrameWnd comme ID_VIEW_TOOLBAR, à moins qu'un ID différent de fenêtre enfant (AFX_IDW_STATUS_BAR) est utilisé.

Gestionnaires de commandes Réservés à la mise à jour

Plusieurs ID de commande standard sont utilisés comme indications contenues dans des barres d'état.Ils utilisent le même mécanisme de gestion de la mise à jour-commande interface utilisateur pour afficher leur état visuel actuel pendant la durée d'inactivité d'application.Étant donné qu'ils ne peuvent pas être sélectionnés par l'utilisateur (autrement dit, vous ne pouvez pas effectuer un volet de barre d'état), il n'est pas justifiée d'avoir un gestionnaire d' ON_COMMAND pour ces ID de commande.

  • ID_INDICATOR_CAPS : indicateur de fonction majuscule.

  • ID_INDICATOR_NUM : indicateur de verrouillage numérique.

  • ID_INDICATOR_SCRL : Indicateur de verrou de ARRÊT DÉFIL.

  • ID_INDICATOR_KANA : Indicateur de verrou de KANA (cela s'applique uniquement aux systèmes japonais).

Les trois de ces derniers est implémenté dans CFrameWnd::OnUpdateKeyIndicator, un programme d'assistance d'implémentation qui utilise l'ID de commande pour le mappage à la clé virtuelle appropriée.Une implémentation commune active ou désactive des (pour les volets d'état désactivés = none texte) selon que d'objet d' CCmdUI la clé virtuelle appropriée est actuellement verrouillés.

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

  • ID_INDICATOR_EXT : EXTs'est arrêté sélectionnez l'indicateur.

  • Indicateur de strike d'ID_INDICATOR_OVR : OVeR.

  • ID_INDICATOR_REC : RECording l'indicateur.

Actuellement il n'existe aucune implémentation standard pour ces indications.

Si vous choisissez d'implémenter ces indicateurs, nous vous recommandons utilisons ces identificateurs des indicateurs et conserver le classement des indicateurs dans votre barre d'état (autrement dit, dans cet ordre : EXT., CAP, VERR, DÉFIL, RFP, REC).

Voir aussi

Autres ressources

Notes techniques de nombres

Notes techniques de catégorie