Cannot convert HGDIOBJ to HFONT



  • Hallo zusammen,

    ich möchte einen Font mit SelectObject() auswählen.

    // Member:
    static HFONT  m_hFont = NULL;
    
    // irgendeine TextausgabeFunktion:
    void TextOutput(HWND hWnd, const RECT* rcDisplay, HDC hMemDC)
    {
    int	      nHeight = (m_rcDisplay.bottom - m_rcDisplay.top) / LINE_COUNT;
    HFONT	      hFontOld = NULL;
    TEXTMETRICW   tmFont;
    LOGFONTW      lfFont;
    SIZE	      szTextExt;
    
    m_hDC = hMemDC;
    ZeroMemory(&lfFont, sizeof(lfFont));
    lfFont.lfHeight = nHeight;
    lfFont.lfWeight = FW_BOLD;
    m_hFont = CreateFontIndirectW(&lfFont);
    // hier meckert er:
    hFontOld = SelectObject(m_hDC,m_hFont);
    }
    

    wie muss ich das richtig machen das es nicht heißt: "Cannot convert from HGDIOBJ to HFONT" bzw. was mach ich überhaupt falsch!? Ich versteh es irgendwie nicht.
    THX



  • Entweder hFontOld als HGDIOBJ deklarieren oder bei der Zuweisung mit SelectObjekt auf HFONT typecasten.



  • wenn ich hFontOld als HGDIOBJ deklariere habe ich aber kein HFONT mehr sondern ein HGDIOBJ.

    Wie würde ich das casten?



  • Normalerweise braucht man hFontOld nur, um es nach Abschluss der Arbeiten mti SelectObject wieder in den DC zu wählen. Dafür reicht es völlig aus, es als HGDIOBJ zu deklarieren.

    Ansonsten halt einen ganz normalen Cast verwenden. Entweder

    hFontOld = (HFONT) SelectObject(m_hDC,m_hFont);
    

    oder besser

    hFontOld = static_cast<HFONT>(SelectObject(m_hDC,m_hFont));
    

Anmelden zum Antworten