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控件

posted @ 2016-11-11 20:48  jadeshu  阅读(169)  评论(0编辑  收藏  举报