2010-04-23 15 views
6

Voglio creare una casella combinata con tutti i tipi di carattere installati del computer enumerati in esso. Non sono sicuro di come sia fatto. Devo accedere al registro per ottenere questo? GrazieOttieni l'elenco di caratteri (Win32)

+0

Grande soluzione in C# qui: http://stackoverflow.com/questions/3486546/enumerating-active-fonts-in-c-sharp-using-dll-call-to-enumfontfamiliesex-has-me – user20493

risposta

8

È necessario utilizzare la funzione API Win32 EnumFontFamiliesEx. Si chiama quella funzione, passando una funzione di callback corrispondente al tipo di EnumFontFamExProc. La funzione di callback è chiamata una volta per ogni carattere trovato da EnumFontFamiliesEx.

Si consiglia di utilizzare la versione Unicode (EnumFontFamiliesExW), in quanto ho visto la versione ascii (EnumFontFamiliesExA) visualizzare un comportamento molto strano per i caratteri della lingua dell'Asia orientale.

Gli articoli collegati hanno un codice di esempio.

4

Il modo migliore per farlo è utilizzare la funzione EnumFontFamiliesEx. È necessario passare una struttura piena con il parametro predefinito DEFAULT_CHARSET per elencare tutti i tipi di carattere installati.

Vedere MSDN per ulteriori informazioni.

+0

Oppure 'EnumFontFamilies 'se non hai bisogno di tutte quelle abilità" Ex "... –