DrawText Problem



  • Hallo @ all :D,

    Habe ein kleines Problem, habe mir das Buch: DirectX 9 und Visual C++ von Christian Rouselle geholt, aber irgendwie hat der Autor den Fehler gemacht oder ich habe was vergessen...

    Auf jeden fall Funktionieren die Programme mit DrawText nicht!!!

    hier die Fehler:

    // Größe des Rechtecks berechnen
        m_lpD3DFont->DrawText(Text, -1, &r, DT_CALCRECT, TextColor);
    
        // Text ausgeben
        m_lpD3DFont->DrawText(Text, -1, &r, DT_CENTER, TextColor);
    

    Bedeutung:

    Direct3D.cpp(108) : error C2660: 'DrawTextA' : Funktion akzeptiert keine 5 Parameter

    // nach erfolgreichem Aufruf zeigt lpD3DFont 
        // auf ein Objekt vom Typ D3DXFont
        D3DXCreateFontIndirect(m_lpD3DDevice,
                               &LogFont,
                               &m_lpD3DFont);
    

    Bedeutung:

    Direct3D.cpp(155) : error C2664: 'D3DXCreateFontIndirectA' : Konvertierung des Parameters 2 von 'struct tagLOGFONTA *' in 'const struct _D3DXFONT_DESCA *' nicht moeglich

    Und wie es in der Header definiert ist

    void DrawText(LPCSTR Text, 
                      int x, int y,
                      D3DCOLOR TextColor);
    

    Bitte um Hilfe

    THX im Vorraus!

    Compiler Status:Visual C++ Enterprise Edition!



  • schau mal in der DirectX Docu nach, diese methoden haben seit DXSDK 9b andere para'meter



  • Kann es sein, das du ID3DXFont und CD3DFont verwechselst?

    Bye, TGGC (Der Held ist zurück)



  • Weiss nun den Fehler...

    War genau wie das Dönertier sagte...

    Die Methode hat andere Parameter bekommen...

    Nun muss ich sehen was ich mache...

    Da ich Anfänger bin habe ich kein plan...

    Naja ich werde sehen was sich machen lässt... 🤡



  • Einfach altes SDK benutzen?

    Bye, TGGC (Der Held ist zurück)



  • TGGC kann ich den das alte runter laden?

    Und wenn ja wo, direkt bei MicroSchrott?

    Oder gibt es nur noch die Summer Edition?



  • spar dir den download 😮 :
    beispielcode

    ID3DXFont* ft;
    ...
    bool init()
    {
        ...
        // font erstellen
        HFONT hf = CreateFont( 12, 0, 0, 0, FW_NORMAL,0, 0, 0, DEFAULT_CHARSET,
    						   OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS,
    						   DEFAULT_QUALITY,DEFAULT_PITCH | FF_DONTCARE, "Arial");
        // hier sollte noch eine fehler abfrage hin
        D3DXCreateFont( device, hf, &ft );
        ...
    }
    
    void drawText(const std::string &text)
    {
    	RECT rc;
        // position festlegen
    	SetRect(&rc, 10,10, 60, 22);
    	ft->DrawTextA(text.c_str(), text.length(), &rc, DT_LEFT | DT_NOCLIP,  0xffff0000);
    }
    
    void render()
    {
        ...
        device->BeginScene();
        // wichtig: geht nur zwischen begin und endscene
        drawText("Hallo");
        device->EndScene();
        ....
    }
    
    // aufräumen nicht vergessen
    void quit()
    {
        if ( ft != 0)
    		ft->Release();
    }
    

    hoffentlich habe ich nichts vergessen :p
    ist doch nicht wirklich schwer oder?



  • Naja du kennst mich nicht bin ein Anfänger was DirectX angeht...

    Aber denke ich werde das hinkriegen..

    Danke for Help 🙂

    Muss das ja nur als eine Klassen Definition haben und dann in die CPP richtig umsetzen..

    Auf Auf 🕶



  • Igorr schrieb:

    TGGC kann ich den das alte runter laden? Und wenn ja wo, direkt bei MicroSchrott?

    Weiss ich nicht, kenne "MicroSchrott" nicht.

    Bye, TGGC (Der Held ist zurück)



  • TGGC meinte Microsoft!!

    Habe auf derren seite nichts ueber das alte SDK gefunden...!




Anmelden zum Antworten