我想像 XP里的注册表一样 在右侧的list contrl上添加图片
现在 ICON1 代表REG_SZ  ICON2 代表 REG_DWORD   (这添加图片incon1)  abc  REG_SZ  asdf
  (这添加图片incon2)  123  DWORD   0x12451231(123)得这么做啊 谁能帮我写下

解决方案 »

  1.   

    //先要得知键值的类型,根据类型判断插入什么图片//ntype已知键值的类型
    int pos = 0;
    if ( ntype == REG_SZ )
    {
    pos = m_reglist.InsertItem( m_reglist.GetItemCount(), "abc", incon1 );
            m_reglist.SetItemText( pos, 1, "REG_SZ" );
            m_reglist.SetItemText( pos, 2, "asdf" );
    }
    else if ( ntype == REG_DWORD )
    {
    pos = m_reglist.InsertItem( m_reglist.GetItemCount(), "123", incon2 );
            m_reglist.SetItemText( pos, 1, "REG_DWORD" );
            m_reglist.SetItemText( pos, 2, "0x12451231(123)" );  //注意要将DWORD类型值转化成字符串型
    }
      

  2.   

    你写的InsertItem这个方法 里的 最后那个直接是 icon的ID吗?? IDI_ICON1
    ?
      

  3.   

    不是,incon1、incon2是对应图表链表里的索引,
    我的做法是:
    在声明中定义:CImageList m_ImageList;
                  int m_REG_SZ_icon,m_REG_DWORD_icon;
    在可以在初始化时,
    m_ImageList.Create(16,16,ILC_COLOR16 | ILC_MASK,0,1);
    m_REG_SZ_icon =m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1 ));
    m_REG_DWORD_icon =m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2 ));
    m_reglist.SetImageList(&m_ImageList,LVSIL_SMALL);在以后InsertItem这个方法 里的 最后那个就是m_REG_SZ_icon,或者m_REG_DWORD_icon
      

  4.   

    有很多list contrl节点图片形式的控件类。你可以搜一下
      

  5.   

    俺 rayyear的方法写的用IF判断 数据类型
    可是注册表里 有很多不同了数据类型 按照你的方法写  第一个是REG_SZ时可以显示当第二个数据类型是REG_DWORD的时候就把REG_SZ的图片给覆盖了 然后出错
      

  6.   

    rayyear 又从新看了你给的代码后理解了 谢谢你~!