Compartilhar via


TN020: convenções de nomenclatura de ID e numeração

Esta nota descreve as convenções de nomenclatura e numeração de ID que o MFC 2.0 usa para recursos, comandos, cadeias de caracteres, controles e janelas filho.

As convenções de nomenclatura e numeração de ID do MFC destinam-se a atender aos seguintes requisitos:

  • Fornecer um padrão de nomenclatura de ID consistente usado na biblioteca MFC e aplicativos MFC que possuem suporte do editor de recursos do Visual C++. Isso torna mais fácil para o programador interpretar o tipo e a origem de um recurso de sua ID.

  • Enfatizar a forte relação de 1 para 1 entre determinados tipos de IDs.

  • Estar em conformidade com os padrões já amplamente usados para nomear IDs no Windows.

  • Particionar o espaço de numeração de ID. Os números de ID podem ser atribuídos por recursos editados pelo programador, pelo MFC, pelo Windows e pelo Visual C++. O particionamento apropriado ajudará a evitar a duplicação de números de ID.

A convenção de nomenclatura de prefixo de ID

Vários tipos de IDs podem ocorrer em um aplicativo. A convenção de nomenclatura de ID do MFC define prefixos diferentes para diferentes tipos de recursos.

O MFC usa o prefixo "IDR_" para indicar uma ID de recurso que se aplica a vários tipos de recursos. Por exemplo, para uma determinada janela de quadro, o MFC usa o mesmo prefixo "IDR_" para indicar um recurso de menu, acelerador, cadeia de caracteres e ícone. A tabela a seguir mostra os vários prefixos e seus usos:

Prefix Uso
IDR_ Para vários tipos de recursos (usados principalmente para menus, aceleradores e faixas de opções).
IDD_ Para recursos de modelo de caixa de diálogo (por exemplo, IDD_DIALOG1).
IDC_ Para recursos de cursor.
IDI_ Para recursos de ícone.
IDB_ Para recursos de bitmap.
IDS_ Para recursos de cadeia de caracteres.

Em um recurso DIALOG, o MFC segue estas convenções:

Prefixo ou rótulo Uso
IDOK, IDCANCEL Para IDs de botão de ação padrão.
IDC_ Para outros controles de caixa de diálogo.

O prefixo "IDC_" também é usado para cursores. Geralmente, esse conflito de nomenclatura não é um problema porque um aplicativo típico terá poucos cursores e muitos controles de caixa de diálogo.

Em um recurso de menu, o MFC segue estas convenções:

Prefix Uso
IDM_ Para itens de menu que não usam a arquitetura de comando MFC.
ID_ Para comandos de menu que usam a arquitetura de comando MFC.

Os comandos que seguem a arquitetura de comando MFC devem ter um manipulador de comando ON_COMMAND e podem ter um manipulador ON_UPDATE_COMMAND_UI. Se esses manipuladores de comando seguirem a arquitetura de comando MFC, eles funcionarão corretamente se estiverem associados a um comando de menu, um botão de barra de ferramentas ou um botão de barra de diálogo. O mesmo prefixo "ID_" também é usado para uma cadeia de caracteres de prompt de menu exibida na barra de mensagens do programa. A maioria dos itens de menu em seu aplicativo deve seguir as convenções de comando MFC. Todas as IDs de comando padrão (por exemplo, ID_FILE_NEW) seguem esta convenção.

O MFC também usa "IDP_" como uma forma especializada de cadeias de caracteres (em vez de "IDS_"). Cadeias de caracteres com o prefixo "IDP_" são prompts, ou seja, cadeias de caracteres usadas em caixas de mensagem. Cadeias de caracteres "IDP_" podem conter "%1" e "%2" como espaços reservados de cadeias de caracteres determinadas pelo programa. As cadeias de caracteres "IDP_" geralmente têm tópicos de ajuda associados a elas e as cadeias de caracteres "IDS_" não. Cadeias de caracteres "IDP_" são sempre localizadas e cadeias de caracteres "IDS_" podem não ser localizadas.

A biblioteca MFC também usa o prefixo "IDW_" como uma forma especializada de IDs de controle (em vez de "IDC_"). Essas IDs são atribuídas a janelas filho, como exibições e divisores pelas classes de estrutura. As IDs de implementação do MFC são prefixadas com "AFX_".

Convenção de numeração de ID

A tabela a seguir lista os intervalos válidos para as IDs dos tipos específicos. Alguns dos limites são limites de implementação técnica e outros são convenções projetadas para impedir que suas IDs colidam com IDs predefinidas do Windows ou implementações padrão do MFC.

É altamente recomendável que você defina todas as IDs dentro dos intervalos recomendados. O limite inferior desses intervalos é 1 porque 0 não é usado. Recomendamos que você use a convenção comum e use 100 ou 101 como a primeira ID.

Prefix Tipo de recurso Intervalo válido
IDR_ multiple de 1 a 0x6FFF
IDD_ modelos de caixa de diálogo de 1 a 0x6FFF
IDC_,IDI_,IDB_ cursores, ícones, bitmaps de 1 a 0x6FFF
IDS_, IDP_ cadeias de caracteres gerais de 1 a 0x7FFF
ID_ commands de 0x8000 a 0xDFFF
IDC_ controls de 8 a 0xDFFF

Motivos para esses limites de intervalo:

  • Por convenção, o valor 0 de ID não é usado.

  • As limitações de implementação do Windows restringem que as IDs de recurso verdadeiras sejam menores ou iguais a 0x7FFF.

  • A estrutura interna do MFC reserva esses intervalos:

    • de 0x7000 d 0x7FFF (consulte afxres.h)

    • de 0xE000 a 0xEFFF (consulte afxres.h)

    • de 16000 a 18000 (consulte afxribbonres.h)

    Esses intervalos podem ser alterados em futuras implementações do MFC.

  • Vários comandos do sistema Windows usam o intervalo de 0xF000 a 0xFFFF.

  • As IDs de controle de 1 a 7 são reservadas para controles padrão, como IDOK e IDCANCEL.

  • O intervalo de 0x8000 a 0xFFFF para cadeias de caracteres é reservado para prompts de menu para comandos.

Confira também

Observações técnicas por número
Observações técnicas por categoria