我做了一个小程序,类似资源管理器那种的文件查看,但是我想要做的稍微精细一点,现在的也就是只能显示大图标,或者显示小图标,不能灵活控制的,请问这种应该怎么做,点击一个按钮,风格显示为大图标,点击另一个按钮,listctrl的风格又显示为列表形态

解决方案 »

  1.   

    做一个菜单,在不同的菜单项里修改list控件的风格
      

  2.   

    例如在显示小图标的菜单项这样处理:        m_cListCtrl.SetRedraw(FALSE); // Remove whatever style is there currently
    m_cListCtrl.ModifyStyle(LVS_ICON | LVS_LIST | LVS_REPORT | LVS_SMALLICON ,0); // Add the tab mode
    m_cListCtrl.ModifyStyle(0, LVS_SMALLICON); //这个函数需要你自己实现一个,负责往list控件里插数据
    InsertItems(); m_cListCtrl.SetRedraw(TRUE);
      

  3.   

    已经解决了,我这样设置的//===================创建文件管理窗口
    void Cdialogfile_list::CreateFileBox()
    {
    HICON     m_Icon[19]; m_imagelist_list_small.Create(16,16,ILC_COLOR32 | ILC_MASK,2,2); 
    m_imagelist_list_normal.Create(32,32,ILC_COLOR32 | ILC_MASK,2,2); m_Icon[0] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_DIRECTORY);
    m_Icon[1] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_NULL);
    m_Icon[2] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_DISK);
    m_Icon[3] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_CDROM);
    m_Icon[4] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_MOBILEDISK);
    m_Icon[5] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_MUSIC);
    m_Icon[6] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_EXE);
    m_Icon[7] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_TXT); m_Icon[8] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_INI);
    m_Icon[9] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_XML);
    m_Icon[10] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_DLL);
    m_Icon[11] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_PIC);
    m_Icon[12] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_RAR);
    m_Icon[13] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_C);
    m_Icon[14] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_H);
    m_Icon[15] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_CPP);
    m_Icon[16] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_DSW);
    m_Icon[17] = AfxGetApp()->LoadIcon(IDI_ICON_FILE_BAT);
      
    for (int i = 0;i<19;i++)
    {
    m_imagelist_list_small.Add(m_Icon[i]);
    m_imagelist_list_normal.Add(m_Icon[i]);
    }
    m_list_filebox.SetImageList(&m_imagelist_list_small,LVSIL_SMALL);
    m_list_filebox.SetImageList(&m_imagelist_list_normal,LVSIL_NORMAL); m_list_filebox.SetExtendedStyle(LVS_EX_FULLROWSELECT);
    m_list_filebox.InsertColumn(0,"名称",LVCFMT_LEFT,180);
    m_list_filebox.InsertColumn(1,"大小",LVCFMT_RIGHT,80);
    m_list_filebox.InsertColumn(2,"类型",LVCFMT_LEFT,80);
    m_list_filebox.InsertColumn(3,"修改日期",LVCFMT_LEFT,130);
    m_list_filebox.InsertColumn(4,"属性",LVCFMT_LEFT,80);

    }//===================设置查看图标类型
    void Cdialogfile_list::SetListIconType(int Type)
    {
    switch(Type)
    {
    case 1:
    {
    m_list_filebox.ModifyStyle(LVS_REPORT, LVS_ICON);
    m_list_filebox.SetImageList(&m_imagelist_list_normal,LVSIL_NORMAL);
    }
    break;
    case 2:
    {
    m_list_filebox.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
    m_list_filebox.SetImageList(&m_imagelist_list_small,LVSIL_SMALL);
    }
    break;
    }
    }