自己写了一个继承CListView类的视图,然后以Progman的子窗口 SHELL_DefView 为父窗口,就是想做一个类似桌面的东东啦,想以大图标的格式显示图标,但是图标总是显示不上去,不晓的咋回事,高手们帮忙解决下吧

解决方案 »

  1.   

    你是多大的图标,listview好像只能支持32*32的,再大就只能自己贴图了
      

  2.   

    就是普通的32*32的噻,以Icon view的方式显示,不是 Report view 方式
      

  3.   

    而且你确定  你的ListView是Icon view吗
      

  4.   

    如果是以MFC生成的CMainFrame为父窗口的话就能显示出来,但是以系统桌面上的那个SHELL_DefView为父窗口就不得行了,难道是需要传说中的进程注入之类的东东吗?很不懂
      

  5.   

    如果以Report view显示的话只能显示最上的那个分列栏,图标也看不到
      

  6.   

    控件属性 ICON,Owner draw fixedclass CThumbItem : public CObject  
    {
    public:
    CThumbItem();
    virtual ~CThumbItem();public:
    CString m_sFileName;
    CString m_sDescription;
    CBitmap *m_pBitmap;
    DWORD m_dwDspMask;
    };CThumbItem::CThumbItem()
    {
    m_dwDspMask = 0;
    m_pBitmap = NULL;
    m_sFileName.Empty();
    m_sDescription.Empty();
    }CThumbItem::~CThumbItem() 

    if(m_pBitmap != NULL)
    {
    delete m_pBitmap;
    m_pBitmap = NULL;
    }
    }
    ///////////////////////////////
    BOOL CListCtrlLoadImageDlg::OnInitDialog()
    {
            ...
    CString path = "E:\\my sample\\ListCtrlLoadImage\\res\\te1st.bmp";
    HBITMAP bitm= m_List.LoadPicture(path);
    m_pItem = new CThumbItem;
    m_pItem->m_pBitmap = NULL;

    m_pItem->m_pBitmap = new CBitmap();                    
    if (bitm!=NULL)
    {
    m_pItem->m_pBitmap->Attach(bitm);
    }

    ///////////////////////////////////
    m_List.xInsertThumbItem(m_pItem);
            ...
    }
    BOOL CListImageCtrl::xInsertThumbItem(CThumbItem* pThumbItem)
    {
    if(pThumbItem == NULL)
    return FALSE;

    LV_ITEM lvItem;
    ZeroMemory(&lvItem, sizeof(LV_ITEM));

    lvItem.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;// | LVIF_TEXT;
    lvItem.iItem = GetItemCount();
    lvItem.iSubItem = 0;
    lvItem.state = 0;
    lvItem.lParam =(LPARAM)pThumbItem;

    InsertItem(&lvItem); return TRUE;
    }
      

  7.   

    SHGetFileInfo(_T("D:\\Program Files\\Tencent\\QQ\\Bin\\QQ.exe"),0,&so,sizeof(so),SHGFI_ICON);
     m_imLarge.Add(so.hIcon);
    我是用系统里面的图标,用SHGetFileInfo()得到的哈
      

  8.   

    devlist.SetImageList(&m_ImageList, LVSIL_NORMAL);
    放在获取系统图标的前面