CImageList *pImageList=new CImageList;
pImageList->Create(16, 16, ILC_COLORDDB|ILC_MASK, 0, 1);
HBITMAP hBitMap;
CBitmap *pBitMap;
hBitMap=LoadALLPIC("res\\image044.jpg");
pBitMap=new CBitmap;
pBitMap->Attach(hBitMap);
pImageList->Add(pBitMap,RGB(0,0,0));
//delete pBitMap;
CImageList* a=m_ExBox.SetImageList(pImageList);
a==NULL,这是怎么回事,
pImageList->Create(16, 16, ILC_COLORDDB|ILC_MASK, 0, 1);
这个Create函数应该如何设置,是不是这个函数的问题导致的,
我的图片是jpg的,多少色的我也不清楚,怎么知道是多少色的呢?

解决方案 »

  1.   

    Return Value 
    A pointer to a CImageList object containing the images previously used by the CComboBoxEx control. NULL if no image list was previously set.
    返回NULL是正常的啊,表明这个控件先前没有选入任何imagelist对象。
      

  2.   

    我的代码如下,
    // TODO: Add your control notification handler code here
    CImageList *pImageList=new CImageList;
    pImageList->Create(16, 16, ILC_COLORDDB|ILC_MASK, 0, 1);
    HBITMAP hBitMap;
    CBitmap *pBitMap;
    hBitMap=LoadALLPIC("res\\image044.jpg");
    pBitMap=new CBitmap;
    pBitMap->Attach(hBitMap);
    pImageList->Add(pBitMap,RGB(0,0,0));
    //delete pBitMap; CImageList* a=m_ExBox.SetImageList(pImageList);
    // 
    //  nItem = m_TestBox.InsertItem(&cbi); COMBOBOXEXITEM insItem;
    insItem.mask=CBEIF_IMAGE | CBEIF_TEXT;
    insItem.iItem=0;
    insItem.iImage=0;
    insItem.pszText="Line 1";
    int b =m_ExBox.InsertItem(&insItem);
    可是控件里什么都没有,还是空的,是那边有问题?
      

  3.   

    调试看一下你的hBitMap=LoadALLPIC("res\\image044.jpg"); 是否成功。然后大小是否为16*16,色彩是否是ILC_COLORDDB
      

  4.   

    图片的一些参数如下:
    bmType        0
    bmWidth        54
    bmHeight       56
    bmWidthBytes   216
    bmPlanes       1
    bmBitsPixel    32
    bmBits        0x00000000
    1、根据这些参数,我的pImageList->Create(, , , , ) 函数参数应该如何设置呢?
    2、现在是能显示了,但是,只有在第一次的下拉列表里能看到,当选择后,在编辑框里图片显示的是空白的,只能显示文字,然后再点击下拉列表,这时里面也是只能显示文字了,图片都显示不了。
      

  5.   

    大小不对啊。ImageList要求的是16*16,你的图片是54*56,肯定不行。
      

  6.   

    用pImageList->Create(54, 56, ILC_COLOR32|ILC_MASK, 0, 1); 
      

  7.   

    原来如此:
    CImageList *pImageList=new CImageList;
    pImageList->Create(54, 56, ILC_COLOR32|ILC_MASK, 0, 1);
    HBITMAP hBitMap[3];
    CBitmap *pBitMap;
    // hBitMap=LoadALLPIC("res\\image044.jpg");
    hBitMap[0]=LoadALLPIC("res\\image044.jpg");
    hBitMap[1]=LoadALLPIC("res\\image028.jpg");
    hBitMap[2]=LoadALLPIC("res\\image050.jpg");
    for (int i=0;i<3;i++)
    {
    pBitMap=new CBitmap;
    pBitMap->Attach(hBitMap[i]);
    pImageList->Add(pBitMap,RGB(0,0,0));
    delete pBitMap;
    COMBOBOXEXITEM insItem;
    insItem.mask=CBEIF_IMAGE | CBEIF_OVERLAY | //CBEIF_INDENT |
                CBEIF_SELECTEDIMAGE | CBEIF_TEXT;   
    insItem.iItem=i;
      CString str;
    str.Format(_T("Item %02d"),   i);   
    insItem.pszText   =   (LPTSTR)(LPCTSTR)str;   
    insItem.cchTextMax   =   str.GetLength();   
    insItem.iImage   =   i;   
    insItem.iSelectedImage   =i;   
    insItem.iOverlay   =   5;   
    insItem.iIndent   =   (i   &   0x03);       //Set indentation according to item position   
    int nItem =m_ExBox.InsertItem(&insItem);
    ASSERT(nItem == i);
    }
    CImageList* a=m_ExBox.SetImageList(pImageList);
    但是还存在一个问题,就是大图片只能按图片的大小设置,如果设小了,就只能显示一部分,
    不知道能不能将整个图片缩小显示?