在BOOL CMyTextDlg::OnInitDialog() 中m_ImageList.Create(32, 32, ILC_COLOR, 0, 1);
m_ImageList.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));m_ListCtrl.SetImageList(&m_ImageList, LVSIL_NORMAL);m_ListCtrl.InsertItem(0, "1", 0);
m_ListCtrl.InsertItem(1, "2", 1);
m_ListCtrl.InsertItem(2, "4", 2);我添加了一个按扭
在按扭点击里   m_ListCtrl.InsertItem(0, "3", 3);
按理说点击 按扭 "3" 应该插入在第一项,可为什么插入到最后?????
我将 0 又改为 1,2,3 可是怎么改都被插入到了最后。高手请帮助我。我是用大图标的 CListCtrl

解决方案 »

  1.   

    好像大图标模式的位置是由其它机制决定的,这个没经验,我向来只用Report模式。
      

  2.   

    应该是用SetItemPosition来设置的。
      

  3.   

    如果可以将程序发到:[email protected]
    我帮你看看,注明帖子的URL!
      

  4.   

    不,我们的项目是用CListCtrl显示缩略图。必须使用CListCtrl。大家请帮帮我
      

  5.   

    如果是使用CListCtrl,那么怎么能设置那么多列?需要重载CListCtrl类了吧!!
      

  6.   

    嗯,这个问题我在我的工程中也刚好碰到了,我解决的办法不一定好,但是算是抛砖引玉吧!~我用的是InsertString()的方法,往里面插入行号iLine和插入值,这个行号iLine一定要连续,不能断。然后你每次调用InsertString()方法的时候让iLine++,就可以让listbox连续的插入数值了,而且是从后往前了
      

  7.   

    楼主,仔细看了看程序,楼主的CListCtrl类需要添加一个回调函数,呵呵,CListCtrl好像没有提供根据Item的Index排序显示的功能。需要你为这个类添加一个按Index排序的回调函数。参考:
    http://www.vchelp.net/wyy/paper/z_lt_sort.asp
      

  8.   

    楼上大哥,谢谢您!问题解决了.
    int CALLBACK ListCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
    {
    CListCtrl* pV=(CListCtrl*)lParamSort;
    if(lParam1<lParam2)
    {
    return -1;
    }
    else if (lParam1==lParam2)
    {
    return 0;
    }
    else
    {
    return 1;
    }

    }m_ListCtrl.SortItems( ListCompare, (DWORD)&m_ListCtrl );      昨天没来得及揭贴,今天我揭贴.  
    再次感谢 vcleaner(我没做大哥已经很久了.......)!!!!!!!!