CComboBoxEx添加图像CImageList无法正常显示
<1>给控件 CComboBox绑定变量 .cpp中
DDX_Control(pDX, IDC_COMBO_PHOTO_IMG, m_ComboBoxPhotoImg);
CComboBoxEx m_ComboBoxPhotoImg; //用户图像
<2>
.cpp中
//创建图像列表
m_imageList.Create(32, 32, ILC_COLOR16, 4, 4);
for(int i = 0; i < 10; i++)
{
m_imageList.Add(::LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1+i)));//向图像列表添加图标ico
}
m_ComboBoxPhotoImg.SetImageList(&m_imageList); //为列表框设置图像列表
int numImgInList = m_imageList.GetImageCount();
for(int i=0; i<numImgInList; i++)
{
COMBOBOXEXITEM cbi ={0};
cbi.mask = CBEIF_IMAGE | CBEIF_INDENT | CBEIF_OVERLAY |
CBEIF_SELECTEDIMAGE | CBEIF_TEXT;
cbi.iItem = i;
CString str;
str.Format(_T("Numb %2d"), i+1);
cbi.pszText = /*(LPTSTR)(LPCTSTR)*/str.GetBuffer();
cbi.cchTextMax = str.GetLength();
cbi.iImage = i;
cbi.iSelectedImage = i;
cbi.iOverlay = 2;
cbi.iIndent = 0;
int nItem = m_ComboBoxPhotoImg.InsertItem(&cbi); //为组合框添加新项目
ASSERT(nItem == i);
}
m_ComboBoxPhotoImg.SetCurSel(0);
上述代码中ASSERT断言总出错,并且nItem总返回为0
检查结果:由于<1>项绑定的控件为CComboBox控件,即资源对话框上拖放的控件是CComboBox控件,所以断言总出错。
改正方法:把CComboBox控件改为Extended ComboBox控件