Condividi tramite


TN020: convenzioni di numerazione e denominazione ID

Questa nota descrive le convenzioni di denominazione e numerazione ID usate da MFC 2.0 per risorse, comandi, stringhe, controlli e finestre figlio.

Le convenzioni di denominazione e numerazione degli ID MFC sono destinate a soddisfare i requisiti seguenti:

  • Fornire uno standard di denominazione ID coerente usato nella libreria MFC e nelle applicazioni MFC supportate dall'editor di risorse di Visual C++. Ciò rende più semplice per il programmatore interpretare il tipo e l'origine di una risorsa dal relativo ID.

  • Evidenziare la relazione forte da 1 a 1 tra determinati tipi di ID.

  • Conforme agli standard già ampiamente usati per la denominazione degli ID in Windows.

  • Partizionare lo spazio di numerazione ID. I numeri ID possono essere assegnati dalle risorse modificate dal programmatore, MFC, Windows e Visual C++. Il partizionamento appropriato consente di evitare la duplicazione dei numeri ID.

Convenzione di denominazione dei prefissi ID

In un'applicazione possono verificarsi diversi tipi di ID. La convenzione di denominazione ID MFC definisce prefissi diversi per tipi di risorse diversi.

MFC usa il prefisso "IDR_" per indicare un ID risorsa applicabile a più tipi di risorse. Ad esempio, per una determinata finestra cornice, MFC usa lo stesso prefisso "IDR_" per indicare una risorsa di menu, acceleratore, stringa e icona. La tabella seguente illustra i vari prefissi e il relativo utilizzo:

Prefisso Usare
IDR_ Per più tipi di risorse (usati principalmente per menu, acceleratori e barre multifunzione).
Telefono diretto_ Per le risorse del modello di finestra di dialogo(ad esempio, IDD_DIALOG1).
IDC_ Per le risorse del cursore.
IDI_ Per le risorse dell'icona.
IDB_ Per le risorse bitmap.
IDS_ Per le risorse stringa.

All'interno di una risorsa DIALOG, MFC segue queste convenzioni:

Prefisso o etichetta Usare
IDOK, IDCANCEL Per gli ID pulsante di pressione standard.
IDC_ Per altri controlli finestra di dialogo.

Il prefisso "IDC_" viene usato anche per i cursori. Questo conflitto di denominazione non è in genere un problema perché un'applicazione tipica avrà pochi cursori e molti controlli finestra di dialogo.

All'interno di una risorsa di menu, MFC segue queste convenzioni:

Prefisso Usare
IDM_ Per le voci di menu che non usano l'architettura dei comandi MFC.
ID_ Per i comandi di menu che usano l'architettura dei comandi MFC.

I comandi che seguono l'architettura dei comandi MFC devono avere un gestore comandi ON_COMMAND e possono avere un gestore ON_UPDATE_COMMAND_UI. Se questi gestori di comandi seguono l'architettura dei comandi MFC, funzioneranno correttamente se sono associati a un comando di menu, a un pulsante della barra degli strumenti o a un pulsante della barra della finestra di dialogo. Lo stesso prefisso "ID_" viene usato anche per una stringa di prompt dei menu visualizzata sulla barra dei messaggi del programma. La maggior parte delle voci di menu nell'applicazione deve seguire le convenzioni dei comandi MFC. Tutti gli ID dei comandi standard (ad esempio, ID_FILE_NEW) seguono questa convenzione.

MFC usa anche "IDP_" come forma specializzata di stringhe (anziché "IDS_"). Le stringhe con il prefisso "IDP_" sono richieste, ovvero stringhe usate nelle finestre di messaggio. Le stringhe "IDP_" possono contenere "%1" e "%2" come segnaposto delle stringhe determinate dal programma. Le stringhe "IDP_" in genere hanno argomenti della Guida associati e le stringhe "IDS_" non lo fanno. Le stringhe "IDP_" vengono sempre localizzate e le stringhe "IDS_" potrebbero non essere localizzate.

La libreria MFC usa anche il prefisso "IDW_" come forma specializzata di ID di controllo (anziché "IDC_"). Questi ID vengono assegnati a finestre figlio, ad esempio visualizzazioni e splitter in base alle classi del framework. Gli ID di implementazione MFC sono preceduti da "AFX_".

Convenzione di numerazione ID

Nella tabella seguente sono elencati gli intervalli validi per gli ID dei tipi specifici. Alcuni dei limiti sono limiti di implementazione tecnica e altri sono convenzioni progettate per impedire agli ID di collidere con gli ID predefiniti di Windows o le implementazioni predefinite di MFC.

È consigliabile definire tutti gli ID all'interno degli intervalli consigliati. Il limite inferiore di questi intervalli è 1 perché 0 non viene usato. È consigliabile usare la convenzione comune e usare 100 o 101 come primo ID.

Prefisso Tipo di risorsa Intervallo valido
IDR_ multipli da 1 a 0x6FFF
Telefono diretto_ modelli di finestra di dialogo da 1 a 0x6FFF
IDC_,IDI_,IDB_ cursori, icone, bitmap da 1 a 0x6FFF
IDS_, IDP_ stringhe generali da 1 a 0x7FFF
ID_ commands 0x8000 tramite 0xDFFF
IDC_ controlli da 8 a 0xDFFF

Motivi per questi limiti di intervallo:

  • Per convenzione, il valore ID 0 non viene usato.

  • Le limitazioni dell'implementazione di Windows limitano gli ID risorsa true in modo che siano minori o uguali a 0x7FFF.

  • Il framework interno di MFC riserva questi intervalli:

    • 0x7000 tramite 0x7FFF (vedere afxres.h)

    • 0xE000 tramite 0xEFFF (vedere afxres.h)

    • Da 16000 a 18000 (vedere afxribbonres.h)

    Questi intervalli possono cambiare nelle future implementazioni MFC.

  • Diversi comandi di sistema di Windows usano l'intervallo di 0xF000 tramite 0xFFFF.

  • Gli ID di controllo da 1 a 7 sono riservati ai controlli standard, ad esempio IDOK e IDCANCEL.

  • L'intervallo di 0x8000 tramite 0xFFFF per le stringhe è riservato ai prompt dei menu per i comandi.

Vedi anche

Note tecniche per numero
Note tecniche per categoria