效果图:
先在资源的工具箱中把 Extended Combo Box控件拖到对话框中, 并添加变量m_SceneBoxEx
一\
.H中 CImageList m_SceneImageList;
CComboBoxEx m_SceneBoxEx;
.CPP中
m_SceneImageList.Create(32,32,ILC_COLOR32 | ILC_MASK,5,2);;//32*32的缩略图,32位的图,最后两个参数是说,先初始化5个, 不够的话每话再初始化2个
for (int i = 0; i < iSourceCount; i++)//资源数
HBITMAP bitmap = NULL;
CBitmap *pBitmap = NULL;
bitmap=(HBITMAP)::LoadImage(::AfxGetInstanceHandle(),tmp,IMAGE_BITMAP,32,32,LR_LOADFROMFILE);//tmp为图片的路径.BMP
if (bitmap == NULL)
{ AfxMessageBox("加载图片失败!");
}
pBitmap = CBitmap::FromHandle(bitmap);
//m_SceneImageList.Add(CBitmap::FromHandle(bitmap), RGB(0, 0, 0));
int nIndex = m_SceneImageList.Add(pBitmap, RGB(0, 0, 0));
if(-1 == nIndex)
{
AfxMessageBox("添加图片失败!");
return ;
}
::DeleteObject( pBitmap );
COMBOBOXEXITEM cbi;
CString str;
int nItem;
cbi.mask = CBEIF_IMAGE | CBEIF_TEXT |CBEIF_SELECTEDIMAGE;
std::string strTmp = tmp;
int index = strTmp.find_last_of('\\')+1;
strTmp.erase(0, index);
cbi.pszText = (LPTSTR)strTmp.c_str();
str = strTmp.c_str();
cbi.iItem = i;
cbi.pszText = (LPTSTR)strTmp.c_str();
str = strTmp.c_str();
cbi.cchTextMax = str.GetLength();
cbi.iImage = i;
cbi.iSelectedImage = i;
nItem = m_SceneBoxEx.InsertItem(&cbi);
ASSERT(nItem == i);
}
m_SceneBoxEx.SetCurSel(0);
m_SceneBoxEx.SetImageList(&m_SceneImageList);