CComboBoxEx SetImageList 返回NULL

hzy694358 2009-11-06 11:31:46
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的,多少色的我也不清楚,怎么知道是多少色的呢?
...全文
112 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐鹦鹉 2009-11-06
  • 打赏
  • 举报
回复
用pImageList->Create(54, 56, ILC_COLOR32|ILC_MASK, 0, 1);
快乐鹦鹉 2009-11-06
  • 打赏
  • 举报
回复
大小不对啊。ImageList要求的是16*16,你的图片是54*56,肯定不行。
hzy694358 2009-11-06
  • 打赏
  • 举报
回复
图片的一些参数如下:
bmType 0
bmWidth 54
bmHeight 56
bmWidthBytes 216
bmPlanes 1
bmBitsPixel 32
bmBits 0x00000000
1、根据这些参数,我的pImageList->Create(, , , , ) 函数参数应该如何设置呢?
2、现在是能显示了,但是,只有在第一次的下拉列表里能看到,当选择后,在编辑框里图片显示的是空白的,只能显示文字,然后再点击下拉列表,这时里面也是只能显示文字了,图片都显示不了。

快乐鹦鹉 2009-11-06
  • 打赏
  • 举报
回复
调试看一下你的hBitMap=LoadALLPIC("res\\image044.jpg"); 是否成功。然后大小是否为16*16,色彩是否是ILC_COLORDDB
hzy694358 2009-11-06
  • 打赏
  • 举报
回复
我的代码如下,
// 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);
可是控件里什么都没有,还是空的,是那边有问题?
快乐鹦鹉 2009-11-06
  • 打赏
  • 举报
回复
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对象。
快乐鹦鹉 2009-11-06
  • 打赏
  • 举报
回复
好像没有这样的方法。
hzy694358 2009-11-06
  • 打赏
  • 举报
回复
原来如此:
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);
但是还存在一个问题,就是大图片只能按图片的大小设置,如果设小了,就只能显示一部分,
不知道能不能将整个图片缩小显示?
hzy694358 2009-11-06
  • 打赏
  • 举报
回复
第二个问题要如何解决呢,每次选择后图片都没法显示了

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧