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.