Fonts als Resource einbinden VC++ 2008



  • Hi an alle,

    wie muss ich vorgehen um eine TTF Font als Resource in mein
    Projekt einzubinden?

    Gruß



  • In der Ressource Datei:

    ID_MYFONT FONT "myfont.ttf"
    

    ID_MYFONT sollte definiert sein als ID

    Im Code:

    DWORD Count ;
    // HMODULE hInstance = LoadLibrary("mylib.dll") ;
    // Ansonsten hInstance Deiner EXE
    HRSRC hResource = FindResource(hInstance ,MAKEINTRESOURCE(ID_MYFONT),RT_FONT) ;
    DWORD dwLength = SizeofResource(hInstance ,hResource) ;
    HGLOBAL hAddress = LoadResource(hInstance , hResource) ;
    HANDLE hFont = AddFontMemResourceEx(hAddress,dwLength,0,&dwCount) ;
    

    Jetzt kannst Du den Font benutzen.
    Danach:

    RemoveFontMemResourceEx(hFont) ;
    // evtl. FreeLibrary(hInstance) ;
    


  • Hi Martin, danke sehr.

    Eine Frage noch, in der .rc Datei oder in der Resource.h?

    EDIT:

    Ok rc Datei scheint es zu sein.
    Aber nun bekomme ich noch den Fehler font names must be ordinals???



  • Ok jetzt gehts.
    Hatte vergessen in der Resource.h noch eine Nummer für die ID_MYFONT zu vergeben.



  • Einen Fehler hab ich nun noch mit der AddFontMemResourceEx.
    Diese scheint nicht zu exisitieren.
    Ich habe die Gdi32.lib eingebunden und auch die wingdi.h includiert.
    Aber das Studio sagt mir die Methode existiert nicht???



  • Ok, nun hab ich alles am laufen.

    Wie kann ich denn den Handle auf die Resource so nutzen, dass ich mit dieser Schrift auch schreiben kann, z.B. mi CDC::DrawText.

    Ich habe es bereits mit CFont::FromHandle probiert aber dieser erwartet eine HFONT und keinen HANDLE.



  • Du musst den Font normal erzeugen...


Log in to reply