R
Nur der Vollstaendigkeitshalber:
Ich wollte mir einen Font-viewer basteln, der mir Beispieltext kopiert, ohne tausende Fonts zu installieren. Dabei hatte ich das Problem, dass ich den Fontnamen einer Datei nicht kannte. So habe ich mir folgende Funktion gebastelt. Man moege mir die Neandertal-Konvertierungen verzeihen... ( meine Funktionen arbeiten alle mit AnsiString ).
Getestet nur mit XP und unbedigt verbesserungsfaehig.
//------------------------------------------------------------------------------
typedef BOOL (WINAPI *p_WinApiFontFnc)(LPCWSTR, DWORD *, LPWSTR, DWORD);
//------------------------------------------------------------------------------
//----- Fuegt eine TrueType-Datei hinzu und gibt den Fontnamen zurueck : -------
//------------------------------------------------------------------------------
String __fastcall AddFontFile( String FontFileName ){
String err_msg = "FontFile \"" + FontFileName + "\" not Found !";
WCHAR wc_FontName[256];
WCHAR wc_FontFile[256];
HINSTANCE hDLL; // Winapi-Haendle
DWORD dw_Size;
err_msg = "FontFile \"" + FontFileName + "\" not Found !";
if( !FileExists( FontFileName )) return err_msg;
hDLL = LoadLibraryW(L"GDI32.DLL");// Bibliothek laden
dw_Size = sizeof(wc_FontName);// Nameslaenge ablegen
AddFontResource( FontFileName.c_str() );// Font - Datei hinzufuegen :
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);// Font-Liste updaten :
FontFileName.WideChar( wc_FontFile , 256 );// NamensString konvertieren
// Funktionszeiger gemaess typedef definieren :
p_WinApiFontFnc GetFontResourceInfoW =
(p_WinApiFontFnc)GetProcAddress(hDLL, "GetFontResourceInfoW");
if (!GetFontResourceInfoW( wc_FontFile , &dw_Size , wc_FontName, 1))
return err_msg;
return AnsiString( wc_FontName );
}
//------------------------------------------------------------------------------
liebe Gruesse vom roamy