Questa nota descrive alcuni dei disegni e delle procedure che è possibile utilizzare per localizzare il componente, sia esso un'applicazione o un controllo OLE o una DLL che utilizza MFC.
Panoramica
Ci sono davvero due problemi per risolvere quando la localizzazione di un componente che utilizza MFC. Prima di tutto, devono localizzare il proprio risorse – stringhe, finestre di dialogo e altre risorse che sono specifici per il componente. La maggior parte dei componenti costruiti usando MFC anche includono e utilizzano un numero di risorse che sono definiti da MFC. È necessario fornire anche le risorse localizzate MFC. Per fortuna, diverse lingue sono già forniti da MFC.
Inoltre, il componente deve essere pronta a correre nel suo ambiente di destinazione (europea o DBCS attivato ambiente). Per la maggior parte, questo dipende l'applicazione trattamento caratteri con il set di bit ad alta correttamente e la manipolazione di stringhe con caratteri a doppio byte. MFC è attivata, per impostazione predefinita, per ciascuno di questi ambienti, tale che essa è possibile avere un file binario singolo "tutto il mondo" che viene utilizzato su tutte le piattaforme con risorse solo diverse collegate in fase di installazione.
Localizzazione delle risorse del componente
Localizzazione di vostra applicazione o DLL dovrebbero coinvolgere semplicemente sostituendo le risorse con le risorse che corrispondano alla lingua di destinazione. Per le proprie risorse, questo è relativamente semplice: modificare le risorse nell'editor di risorse e compilare l'applicazione. Se il codice è scritto correttamente saranno stringhe o testo che si desidera localizzare hardcoded nel codice sorgente C++ – tutti localizzazione può essere fatto semplicemente modificando le risorse. In realtà, è possibile implementare il componente tale che tutti fornendo una versione localizzata non addirittura comporta una compilazione del codice originale. Questo è più complesso, ma vale la pena ed è il meccanismo scelto per MFC. È anche possibile localizzare un'applicazione mediante caricamento del file EXE o DLL in editor di risorse e modificare direttamente le risorse. Mentre questo è possibile, che è necessario riapplicare tali modifiche ogni volta che si crea una nuova versione dell'applicazione.
Un modo per evitare ciò è da individuare tutte le risorse in una DLL separata, a volte chiamata una DLL satellite. Questa DLL viene quindi caricata in modo dinamico in fase di esecuzione e le risorse vengono caricate dalla DLL anziché dal modulo principale con tutto il codice. MFC supporta direttamente questo approccio. Si consideri un'applicazione denominata MYAPP.EXE; potrebbe avere tutte le relative risorse che si trova in una DLL denominata MYRES.DLL. nell'applicazione InitInstance eseguirebbe il seguente per caricare la DLL e causare MFC caricare le risorse da quella posizione s:
CMyApp::InitInstance()
{
/ / una delle prime cose che nel codice init
HINSTANCE hInst = LoadLibrary("myres.dll");
Se (hInst! = NULL)
AfxSetResourceHandle(hInst);
/ / altro codice di inizializzazione seguirebbe
.
.
.
}
Da allora in poi, MFC caricherà le risorse da tale DLL anziché da MyApp. exe. Tutte le risorse, tuttavia, devono essere presente in tale DLL – MFC non eseguirà la ricerca istanza dell'applicazione alla ricerca di una determinata risorsa. Questa tecnica si applica ugualmente bene a regolare le dll, nonché controlli OLE. Il programma di installazione potrebbe copiare la versione appropriata di MYRES.DLL locale quale risorsa a seconda dell'utente vorrebbe.
È relativamente facile creare una risorsa solo DLL. Creare un progetto DLL, aggiungere tuo.RC file ad esso e aggiungere le risorse necessarie. Se avete un progetto esistente che non fa uso di questa tecnica, è possibile copiare le risorse da quel progetto. Dopo aver aggiunto il file di risorse al progetto sono quasi pronto per generare il progetto. L'unica cosa che devi fare è impostare il linker opzioni per includere /NOENTRY. Questo dice il linker che la DLL non ha nessun punto di ingresso – dal momento che non ha alcun codice, non ha nessun punto di ingresso.
&Notanbsp; Editor di risorse in Visual C++ 4.0 e successive supporta più lingue a.File RC. Questo può rendere molto facile da gestire la vostra localizzazione in un singolo progetto. Le risorse per ogni lingua è controllato dalle direttive per il preprocessore generate dall'editor di risorse.
Usando MFC fornito risorse localizzate
Qualsiasi applicazione MFC che si costruzione riutilizza due cose da MFC: codice e risorse. Cioè, MFC ha vari messaggi di errore, le finestre di dialogo incorporate e altre risorse utilizzate dalle classi MFC. Al fine di localizzare completamente l'applicazione, è necessario localizzare non solo risorse dell'applicazione, ma anche le risorse che provengono direttamente da MFC. MFC fornisce un certo numero di lingue diverse file di risorse automaticamente, in modo che se la lingua di destinazione è una delle lingue che MFC supporta già, solo bisogno di assicurarsi di che utilizzare tali risorse localizzate.
Stesura di questo documento MFC supporta: cinese, tedesco, spagnolo, francese, italiano, giapponese e coreano. I file che contengono queste versioni localizzate sono nella MFC\INCLUDE\L.* ('L' sta per localizzate) telefonici. I file tedeschi sono in MFC\INCLUDE\L.DEU, per esempio. Al fine di provocare l'applicazione per utilizzare questi file RC anziché i file si trova in MFC\INCLUDE, è sufficiente aggiungere un /IC:\PROGRAM FILES\DEVSTUDIO\VC\MFC\INCLUDE\L.DEU alla tua riga comando RC (questo è solo un esempio-si avrebbe bisogno di sostituire il proprio locale di scelta, come pure la directory in cui è installato Visual C++).
Le istruzioni di cui sopra funziona se l'applicazione si collega in modo statico con MFC. Maggior parte delle applicazioni link dinamicamente (perché questo è il valore predefinito di AppWizard). In questo scenario, non solo il codice è dinamicamente così legato – sono le risorse. Di conseguenza, localizzare le risorse dell'applicazione, ma le risorse di implementazione MFC saranno ancora caricate dalla MFC4x.DLL (o una versione successiva) o da MFC4xLOC.DLL se esiste. Questo approccio da due angolazioni diverse.
Fu&nzionalità solo in Professional ed Enterprise edizioninbsp; Collegamento statico a MFC è supportato solo in Visual C++ Professional ed Enterprise edizioni. Per ulteriori informazioni, vedere Edizioni di Visual C++.
L'approccio più complesso è quello di nave uno della MFC4xLOC.DLLs localizzate (ad esempio MFC4xDEU, per il tedesco, MFC4xESP.DLL per spagnolo, ecc.) o una versione successiva e installare l'opportuno MFC4xLOC.DLL nella directory di sistema quando l'utente installa l'applicazione. Questo può essere molto complesso, sia per lo sviluppatore che per l'utente finale e come tale non è consigliato. Per ulteriori informazioni su questa tecnica e i suoi avvertimenti vedere 56 Note tecniche.
L'approccio più semplice e sicuro è possibile includere le risorse localizzate MFC nella vostra applicazione o DLL stessa (o suo satellite DLL) se si utilizza uno. Questo consente di evitare i problemi di installazione di MFC4xLOC.DLL correttamente. A tale scopo, seguire le istruzioni stesse per il caso di statica data sopra (riga di comando RC correttamente per puntare a risorse localizzate di impostazione), tranne che è necessario rimuovere anche il /D_AFXDLL definire che è stato aggiunto da creazione guidata applicazione. Quando /D_AFXDLL è definito, AFXRES.H (e gli altri file RC MFC) non realmente definiscono eventuali risorse (perché essi sarà tirati da DLL MFC invece).
&Note tecniche per numero |nbsp; Note tecniche per la categoria