CHeaderCtrl-Sortierrichtungsanzeige



  • In meiner SDI-Listview funktioniert die Anzeige der Richtungspfeile im Header nicht, es wird NICHTS angezeigt, obwohl der Handler aufgerufen wird und auch fehlerfrei ausgeführt wird:

    ON_NOTIFY(HDN_ITEMCLICKA, 0, &CMyView::OnHdnItemclick)
    	ON_NOTIFY(HDN_ITEMCLICKW, 0, &CMyView::OnHdnItemclick)
    
    void CMyView::OnHdnItemclick(NMHDR *pNMHDR, LRESULT *pResult)
    {
      LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
      BOOL bSortUp=TRUE;
      HDITEM hditem;
    
      memset(&hditem, 0, sizeof(hditem));
      hditem.mask = HDI_FORMAT;
      VERIFY( GetListCtrl().GetHeaderCtrl()->GetItem(1, &hditem));
      hditem.fmt &= ~(HDF_SORTDOWN|HDF_SORTUP);
      hditem.fmt |= bSortUp ? HDF_SORTDOWN : HDF_SORTUP;
      VERIFY(GetListCtrl().GetHeaderCtrl()->SetItem(1, &hditem));
    
      *pResult = 0;
    }
    

    Es ist eine virtuelle Liste, aber daran sollte es ja wohl nicht scheitern?
    Hat jemand eine Idee?
    Danke.



  • hditem.mask = HDI_TEXT | HDI_FORMAT | HDI_BITMAP; 
    hditem.fmt |= HDF_SORTUP | HDF_BITMAP_ON_RIGHT;
    hditem.fmt &= ~HDF_SORTDOWN;
    

    Turmfalke64



  • Turmfalke64 schrieb:

    hditem.mask = HDI_TEXT | HDI_FORMAT | HDI_BITMAP; 
    hditem.fmt |= HDF_SORTUP | HDF_BITMAP_ON_RIGHT;
    hditem.fmt &= ~HDF_SORTDOWN;
    

    Turmfalke64

    Nein, so funktioniert das nicht.
    Wenn man HDI_BITMAP angibt,muss man auch .hbm füllen,was ich natürlich nicht will.
    Wenn man HDI_TEXT angibt,muss man auch .pszText füllen,was ich natürlich nicht will.
    Außerdem scheint die ganze Sache auch noch comctl32-versionsabhängig zu sein;
    Google liefert für "ListView_SetHeaderSortImage" eine Lösung.


Anmelden zum Antworten