程序需要向ComboBox添加新项,但是添加的这个新项需要显示在已有项的第一个!
但已有程序已对其他项的操作做好规定,就是按初始添加项的时候进行了规定,此时添加新项实际改变了以前项的排序,导致重新选择的时候,选择项的时候不能按以前的值去操作,怎么才能不修改项的排位而让新项显示在其他项的前面呢?
但已有程序已对其他项的操作做好规定,就是按初始添加项的时候进行了规定,此时添加新项实际改变了以前项的排序,导致重新选择的时候,选择项的时候不能按以前的值去操作,怎么才能不修改项的排位而让新项显示在其他项的前面呢?
初始化:
m_ComboCtrl.ResetContent();
m_ComboCtrl.AddString("string 1");
m_ComboCtrl.AddString("string 2");
m_ComboCtrl.AddString("string 3");
添加一个选项在首行:
m_ComboCtrl.InsertString(0,"string 0");
设置对应的值:
m_ComboCtrl.SetItemData(0,3);
m_ComboCtrl.SetItemData(1,0);
m_ComboCtrl.SetItemData(2,1);
m_ComboCtrl.SetItemData(3,2);
取出对应原来排序的值:
OnSelchangeCombo()
{
m_Combo=m_ComboCtrl.GetItemData(m_ComboCtrl.GetCurSel());
}m_Combo的值就是原来排好的顺序,按照它进行原来的操作就可以了。
使用SetItemData对项目进行数据关联,这样可以不用担心项目顺序的变化。
dwItemData 指定待设置的项的新值。 说明:
给组合框中某个项设置一个32位的值。如果是一个指针,则可以用SetItemDataPtr函数进行设置。
这样你可以传进去一个结构体指针.可以保存你关于nindex索引值对应项的任何信息.都是你自定义的.取的时候调用CComboBox::GetItemData取结构体里的内容就可以了.
GetItemData
利用上述函数,使你实际用的索引保存在ItemData中,添加新项目时,在顶部插入,但ItemData指定是尾部的(最大的+1),对项目进行数据关联,在用到取值的时候,通过当前选中项目的索引提取其ItemData就是你要使用的值。