1、插入数据
TCHAR *pBuf = new TCHAR[MAX_PATH];
memset(pBuf,_T('\0'),MAX_PATH * sizeof(TCHAR));
_tcscpy(pBuf,自定义数值);
COMBOBOXEXITEM item={0};
item.mask = CBEIF_TEXT |CBEIF_LPARAM; //这里很重要,CBEIF_LPARAM不能缺少,否则lParam无法设置
item.iItem = iIndex; //设置选项的下标
item.pszText =(LPTSTR)(LPCTSTR)显示字符串值;
item.lParam=(LPARAM)pBuf;
item.cchTextMax=pBuf的尺寸
ComboboxEx对象.InsertItem (&item);
2、读取数据
COMBOBOXEXITEM item={0};
TCHAR szBuf1[1024];
item.mask = CBEIF_TEXT | CBEIF_LPARAM; //这里很重要,CBEIF_LPARAM不能缺少,否则读取不到数据
item.iItem =ComboboxEx对象..GetCurSel(); //设置选项的下标
item.pszText = szBuf1;
ComboboxEx对象.GetItem(&item);
CString sValue;
sValue.Format(_T("%s"),item.lParam);
3、在删除选项时释放资源(关闭窗体时也会调用此事件,无需另外编码释放资源)
ON_NOTIFY(CBEN_DELETEITEM,IDC_CB_ITEM, OnComboBoxItemDelete) //注册事件
void CDlg::OnComboBoxItemDelete(NMHDR *pNMHDR,LRESULT *pResult)
{
NMCOMBOBOXEX* pncbe = reinterpret_cast<NMCOMBOBOXEX*>( pNMHDR );
COMBOBOXEXITEM& cbei = pncbe->ceItem;
COMBOBOXEXITEM item={0};
item.mask=CBEIF_LPARAM; //值
item.iItem = cbei.iItem; //设置要获取的项的下标
ComboboxEx对象.GetItem(&item);
if (item.lParam!=0){ delete (TCHAR*) item.lParam; }
pResult = 0;
}