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.