Announcement

Collapse
No announcement yet.

CListCrtl OwnerDraw: Null-Pointer bei GetFont()

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CListCrtl OwnerDraw: Null-Pointer bei GetFont()

    Hallo,

    ich versuche gerade die DrawItem-Methode zu überschreiben:
    Rufe ich das Fenster mit dem List-Control auf, werden die Daten korrekt in der Liste angezeigt. Verkleinere / vergrössere ich das Fenster mit der Maus, kommt eine Exception Access-Violation.
    Ich habe daraufhin mein Code angepasst (bei Null mache ich return, ist natürlich schlecht, da dann die Daten fehlen....):

    Code:
    void  CListControlOwnerDrawn::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
    {
    
      LOGFONT stcFont = {0};
      CFont  * pFont = GetFont();  // bei vergrössern / verkleinert immer NULL ????
      CFont  SymFont;
      if (pFont != NULL)   
      {
        pFont->GetObject(sizeof(LOGFONT), &stcFont); 
        stcFont.lfCharSet = SYMBOL_CHARSET;
       _tcscpy_s(stcFont.lfFaceName, _T("SYMBOL"));
    
      }
      else return;
      SymFont.CreateFontIndirect(&stcFont);
      ...
    }
    Warum ist pFont Null ?

    M.H

  • #2
    Hallo,

    merke mir jetzt den Font als Member-Variable:
    Code:
    CFont  * pFont = GetFont();
      if ((pFont != NULL) && (m_bSetFont == false))
      {
        LOGFONT stcFont = {0};
        m_bSetFont = true;
        pFont->GetObject(sizeof(LOGFONT), &stcFont); 
        stcFont.lfCharSet = SYMBOL_CHARSET;
    	  _tcscpy_s(stcFont.lfFaceName, _T("SYMBOL"));
        m_SymFont.CreateFontIndirect(&stcFont);
      }
    Nur wenn ich jetzt vergrössere / verkleinere werden nicht alle Zeilen im ListControl angezeigt. Warum ?

    M.H

    Comment

    Working...
    X