TN020 : Conventions d'affectation de noms et de numérotation ID.
Cette remarque décrit les conventions d'affectation de noms et de numérotation de l'ID que MFC 2,0 utilise des ressources, des commandes, des chaînes, des contrôles, des fenêtres enfants.
Les conventions d'affectation de noms et de numérotation de l'ID de MFC sont conçues pour répondre aux conditions suivantes :
Fournissez une norme Identificateur-nommant cohérent utilisé au delà de la bibliothèque MFC et les applications MFC qui sont prises en charge par l'éditeur de ressources Visual C++.Cela simplifie le programmeur interprète le type et l'origine d'une ressource à partir de son ID
Accentuez la relation 1 à 1 forte entre certains types d'identificateurs.
Conformez-vous aux normes déjà largement utilisées pour nommer des identificateurs dans windows.
Partitionner l'espace d'Identificateur-numérotation.Les numéros d'ID peuvent être assignés par le programmeur, MFC, les fenêtres, et les ressources visuelles en C++-edited.Le partitionnement approprié permet d'éviter la duplication les numéros d'identification.
La convention d'affectation de noms de préfixe d'ID
Plusieurs types d'identificateurs peuvent se produire dans une application.MFC Identificateur-nommant la convention définit des préfixes pour différents types de ressource.
MFC utilise le préfixe « IDR_ » pour indiquer un ID de ressource qui s'applique à plusieurs types de ressource.Par exemple, pour une fenêtre frame données, MFC utilise le même préfixe « IDR_ » pour indiquer un menu, un accélérateur, une chaîne et une ressource icône.Le tableau suivant montre les différents préfixes et leur utilisation :
Préfixe |
Utilisation |
---|---|
IDR_ |
Pour plusieurs types de ressource (principalement utilisés pour les menus, les accélérateurs, et des rubans). |
IDD_ |
Pour les ressources modèles de boîte de dialogue (par exemple, IDD_DIALOG1). |
IDC_ |
Pour les ressources curseur. |
IDI_ |
Pour les ressources icône. |
IDB_ |
Pour les ressources bitmap. |
IDS_ |
Pour les ressources de type chaîne. |
Dans une ressource de boîte de dialogue, MFC suit ces conventions :
Préfixe ou nom |
Utilisation |
---|---|
IDOK, IDCANCEL |
Pour les identificateurs standard du bouton de commande. |
IDC_ |
Pour d'autres contrôles de boîte de dialogue. |
Le préfixe « IDC_ » est également utilisé pour les curseurs.Ce conflit de nom n'est en général pas un problème car une application classique nombre limité de curseurs et de nombreux contrôles de boîte de dialogue.
Dans une ressource menu, MFC suit ces conventions :
Préfixe |
Utilisation |
---|---|
IDM_ |
Pour les éléments de menu qui n'utilisent pas l'architecture de commande MFC. |
ID_ |
Pour les commandes de menu qui utilisent l'architecture de commande MFC. |
Les commandes qui suivent l'architecture de commande MFC doivent avoir un gestionnaire de commandes d' ON_COMMAND et peuvent avoir un gestionnaire d' ON_UPDATE_COMMAND_UI .Si ces gestionnaires de commandes suivent l'architecture de commande MFC, ils fonctionneront correctement s'ils sont liés à une commande de menu, un bouton de barre d'outils, ou un bouton de barre de boîte de dialogue.Le même préfixe « ID_ » est également utilisé pour une chaîne d'invite de menu qui s'affiche dans la barre des messages du programme.La plupart des éléments de menu dans votre application doivent respecter les conventions de commande MFC.Tous les ID de commande standard (par exemple, ID_FILE_NEW) suivent cette convention.
MFC utilise également « IDP_ » comme une forme spécialisée de chaînes (au lieu de « IDS_ »).Les chaînes avec le préfixe « IDP_ » sont des invites, c. autrement dit., chaînes utilisées dans les messages. "Chaînes d'IDP_ les » peuvent contenir « %1" et « %2" comme espaces réservés des chaînes déterminées par le programme. "Chaînes d'IDP_ les » ont généralement des rubriques d'aide associées, et « chaînes d'IDS_ les » ne font pas. "Chaînes d'IDP_ des » sont toujours situées, et « chaînes d'IDS_ des » ne peuvent pas être localisées.
La bibliothèque MFC utilise également le préfixe « IDW_ » comme un formulaire spécialisé des ID de contrôle (au lieu de « IDC_ »).Ces identificateurs sont assignés à des fenêtres enfants telles que les vues et les séparateurs par les classes d'infrastructure.Des identificateurs d'implémentation MFC sont précédés « AFX_ ».
La convention d'Identificateur-Numérotation
Le tableau suivant répertorie les plages valides pour les ID des types spécifiques.Certaines limites sont des limites techniques d'implémentation, et d'autres sont des conventions qui sont conçues pour empêcher les identificateurs de se avec les identificateurs prédéfinis par windows ou MFC ont comme valeur par défaut des implémentations.
Nous vous recommandons vivement de définir tous les identificateurs dans des plages recommandées.La limite inférieure de ces plages est 1 parce que 0 n'est pas utilisé.Nous vous recommandons d'utiliser la convention et l'utilisation courantes 100 ou 101 comme première identification
Préfixe |
Type de ressource |
Plage valide |
---|---|---|
IDR_ |
multiple |
1 0x6FFF crossing |
IDD_ |
modèles de boîte de dialogue |
1 0x6FFF crossing |
IDC_, IDI_, IDB_ |
curseurs, icônes, bitmaps |
1 0x6FFF crossing |
IDS_, IDP_ |
chaînes générales |
1 0x7FFF crossing |
ID_ |
commandes |
0x8000 via 0xDFFF |
IDC_ |
Contrôles |
8 0xDFFF traversants |
Les raisons de ces allant des limites suivantes :
Par convention, la valeur d'ID de 0 n'est pas utilisée.
Les limitations d'implémentation de fenêtres restreignent de véritables identificateurs de ressource pour être inférieur ou égal à 0x7FFF.
Plages internes de la réserve deux des implémentations de l'infrastructure MFC : 0x7000 via 0x7FFF et 0xE000 via 0xEFFF.
Plusieurs commandes système Windows utilisent la plage de 0xF000 via 0xFFFF.
Des ID de contrôle de 1 à 7 sont réservés pour les contrôles standard tels qu'IDOK et IDCANCEL.
La plage de 0x8000 via 0xFFFF pour les chaînes est réservée aux invites de menu pour les commandes.