//创建图象列表
m_hdrImageList.Create(16,16,TRUE,4,4);
m_hdrImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONFLAG));
m_hdrImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONASCEND));
m_hdrImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONDESCEND));HD_ITEM hdItem;
hdItem.mask=HDI_FORMAT;
VERIFY(m_headerCtrlEx.GetItem(nItem,&hdItem));
if(nImage!=-1) {
hdItem.fmt|=HDF_IMAGE;
hdItem.iImage=nImage;
}
else 
hdItem.fmt&=~HDF_IMAGE;

VERIFY(m_headerCtrlEx.SetItem(nItem,&hdItem));我发现无论iImage为多少,在标头中只显示第一个icon
这是为什么?

解决方案 »

  1.   

    少了一行,应如下:
    //创建图象列表
    m_hdrImageList.Create(16,16,TRUE,4,4);
    m_hdrImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONFLAG));
    m_hdrImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONASCEND));
    m_hdrImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONDESCEND));m_headerCtrlEx.SetImageList(m_hdrImageList);HD_ITEM hdItem;
    hdItem.mask=HDI_FORMAT;
    VERIFY(m_headerCtrlEx.GetItem(nItem,&hdItem));
    if(nImage!=-1) {
    hdItem.fmt|=HDF_IMAGE;
    hdItem.iImage=nImage;
    }
    else 
    hdItem.fmt&=~HDF_IMAGE;

    VERIFY(m_headerCtrlEx.SetItem(nItem,&hdItem));我发现无论iImage为多少,在标头中只显示第一个icon
    这是为什么?
      

  2.   

    SetImageList阿,如果你不设定,那他显示个什么啊。