CHeaderCtrl绘制排序图标不理想,帮看看
// CAppListView 派生自 CListView, 这是单击列表头控件某一栏时的处理函数
void CAppListView::OnLvnColumnClick(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
m_nColSel = pNMListView->iSubItem;
CListCtrl &lc = GetListCtrl();
CHeaderCtrl *pHeader = lc.GetHeaderCtrl();
pHeader->GetItemRect(m_nColSel, &m_rcColSel);
pHeader->ClientToScreen(&m_rcColSel);
// rcColSel.top -= 30; 会画到工具栏上面去,显示效果好好嘞
// rcColSel.top += 30; 会画在列表框内,效果也不错哦
// change the item to owner drawn.
HD_ITEM hditem;
hditem.mask = HDI_FORMAT | HDI_TEXT ;
pHeader->GetItem(m_nColSel, &hditem);
hditem.fmt |= HDF_OWNERDRAW;
CBitmap bmp;
bmp.LoadBitmap(IDB_TREE_IMAGELIST);
m_imageList.Create(16, 16, ILC_COLOR24|ILC_MASK, 1, 1);
m_imageList.Add(&bmp, RGB(192,192,192));
pHeader->SetImageList(&m_imageList);
m_imageList.Detach();
pHeader->SetItem(m_nColSel, &hditem);
CDC dc;
dc.Attach(::GetWindowDC(NULL)); // note: this dc is used in screen coordinates
HICON hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
ASSERT(hIcon);
::DrawIconEx(dc.m_hDC, m_rcColSel.right-30, m_rcColSel.top-10,
hIcon, 16, 16, 0, NULL, DI_NORMAL); //}
dc.DeleteDC();
*pResult = 1;
}
效果就是除在这个头控件部分不能正常显示,这是为什么?