Eigene Font bei CreateFont



  • *push* 😞



  • Du mußt auf jeden Fall die Library "gdi32.lib" mitlinken.
    Und die Parameter der Funktion suchst du dir am besten aus der MSDN-Doku raus.



  • guggst du da:

    http://msdn2.microsoft.com/en-us/library/ms533942.aspx

    hier ein bsp code:

    HFONT		my_font;
    
    boolean My_LoadFontResource(void){
    
    	HRSRC		ResourceInfo;
    	DWORD		ResourceSize;
    	HGLOBAL	ResourceHandle;
    	LPVOID		*ResourceData;
    	DWORD		nFont;
    
    	ResourceInfo = FindResource(NULL, MAKEINTRESOURCE(MY_FONT), "SCHRIFT");
    	if(!ResourceInfo){
    		return FALSE;
    	}
    	ResourceSize = SizeofResource(NULL, ResourceInfo);
    	ResourceHandle = LoadResource(NULL, ResourceInfo);
    	ResourceData = LockResource(ResourceHandle);
    	my_font = AddFontMemResourceEx(ResourceData, ResourceSize, 0, &nFont);
    	return my_font;
    }
    


  • Hey cool, danke für den Bsp-Code ^^

    @Linken:
    Ich hatte die aber gelinkt..
    Und windows.h auch inkludiert..

    Dann habe ich die geöffnet, darin wurde dann die gdi-Header-Datei inkludiert, welche ich auch auf gemacht habe und darin wurde die Funktion deklariert, trotzdem kann ich die nicht nutzen..



  • Könnte vielleicht einer freundlicherweise ein Bsp-Projekt machen und das hochladen?
    Das wäre echt nett!
    Danke 🙂



  • Woran kann es denn noch liegen..?
    Die lib habe ich gelinkt und windows.h habe ich inkludiert..



  • Ich habe mal das Code::Blocks benutzt und da funktioniert es..
    Nun habe ich also die Font, aber wie kann ich die jetzt mit Createfont benutzen?
    Ich habe die mal mit dem Windows-Programme geöffnet und mir den Namen gemerkt, diesen dann bei Createfont eingegeben, aber das hat nicht funktioniert..



  • *push*?



  • *pushpush*?



  • Wie sieht denn dein Code aus? Hast du denn AddFontResource bzw. AddFontMemResourceEx vor dem Aufruf von CreateFont benutzt?



  • Ja.
    Der Code ist einfach nur der Bsp-Code.
    Eine Font ge'addet' und den Namen der Font dann in CreateFont benutzt 😕



  • aber das hat nicht funktioniert..

    Und was genau funktioniert jetzt nicht? Was hast du denn mit dem Font dann gemacht? Muß man dir alles aus der Nase ziehen? Ich muß mir wohl doch wieder eine Glaskugel zulegen -)



  • /*FONT-LOAD FUNKTION*/
    HFONT my_font;
    BOOL My_LoadFontResource(void) {
    HRSRC ResourceInfo;
    DWORD ResourceSize;
    HGLOBAL ResourceHandle;
    LPVOID *ResourceData;
    DWORD nFont;
    ResourceInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_FONT1), MAKEINTRESOURCE(8));
    if(!ResourceInfo) {
    MessageBox(NULL, "Nicht gefunden", 0, 0);
    return FALSE;
    }
    else {
    MsgBox(NULL, "Gefunden!", 0, 0);
    ResourceSize = SizeofResource(NULL, ResourceInfo);
    ResourceHandle = LoadResource(NULL, ResourceInfo);
    ResourceData = LockResource(ResourceHandle);
    my_font = AddFontMemResourceEx(ResourceData, ResourceSize, 0, &nFont);
    return my_font;
    }
    
    /*FONT BENUTZEN*/
    
    if(My_LoadFontResource()) {
    MessageBox(NULL, "gut",0,0);
    SelectObject(hDC(), My_LoadFontResource());
    }
    
    /*ODER*/
    
    SelectObject(hDC, CreateFont(12, 0, 0, 0, 0, 0, 0, 0, OEM_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, "FONTNAME"));
    

    So habe ich das, und beide Font-Benutzen-Methoden haben nicht funktioniert 😕



  • Und dann schreibe ich etwas mit TextOut.
    Das Ergebnis ist das gleiche, wie wenn ich bei dem Namen der Font in CreateFont einen leeren String angebe..
    Irgend so eine Standard Font..



  • Jetzt habe ich doch den benutzten Code gepostet 😕



  • Irgendeiner muss doch wissen, wie das funktioniert 😞



  • *hust*



  • Weiß das echt keiner?



  • /*FONT-LOAD FUNKTION*/
    HFONT my_font;
    BOOL My_LoadFontResource(void) {
    HRSRC ResourceInfo;
    DWORD ResourceSize;
    HGLOBAL ResourceHandle;
    LPVOID *ResourceData;
    DWORD nFont;
    ResourceInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_FONT1), MAKEINTRESOURCE(8));
    if(!ResourceInfo) {
    MessageBox(NULL, "Nicht gefunden", 0, 0);
    return FALSE;
    }
    else {
    MsgBox(NULL, "Gefunden!", 0, 0);
    ResourceSize = SizeofResource(NULL, ResourceInfo);
    ResourceHandle = LoadResource(NULL, ResourceInfo);
    ResourceData = LockResource(ResourceHandle);
    my_font = AddFontMemResourceEx(ResourceData, ResourceSize, 0, &nFont);
    return my_font;
    }
    
    /*FONT BENUTZEN*/
    
    if(My_LoadFontResource()) {
    MessageBox(NULL, "gut",0,0);
    SelectObject(hDC(), My_LoadFontResource());
    }
    
    /*ODER*/
    
    SelectObject(hDC, CreateFont(12, 0, 0, 0, 0, 0, 0, 0, OEM_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, "FONTNAME"));
    

    Dann TextOut benutzen und die benutzte Font wird eine Standard-Font sein, die auch genutzt wird, wenn man keine Font bei CreateFont angibt.



  • Hier sind doch immer solche Profis 😕


Anmelden zum Antworten