【发布时间】:2013-03-12 10:22:21
【问题描述】:
如何在动态创建的 CComboBoxes 中获取 CBN_SELCHANGE??.. 我使用了一个 CComboBoxes 数组。
MyCComboBox * p_ComboBoxes = new MyCComboBox[numberOcComboBoxes]; //numberOcComboBoxes determined at rumtime
在MyCComboBox的消息映射中
BEGIN_MESSAGE_MAP(MyCComboBox , CComboBox)
ON_CONTROL_REFLECT(CBN_SELCHANGE, &CTestDlg::OnCbnSelchange)
END_MESSAGE_MAP()
void CTestDlg::OnCbnSelchange()
{
this->GetDlgCtrlID(); // Get The ComboBox ID;
CString sText;
p_ComboBoxes[0].GetLBText(p_ComboBoxes[0].GetCurSel() , sText); // I can't access like this
}
// p_ComboBoxes 数组的初始化..
for (int i = 0 ;i < iNumber ; i++)
{
p_ComboBoxes[i].Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWN,
CRect(10 + MY_PIC_ADDITIONAL_WIDTH,iItemDrawHeight,10 + MY_PIC_ADDITIONAL_WIDTH +MY_PIC_PROPERTY_WIDTH
,iItemDrawHeight +MY_PIC_HEIGHT), this, pImageControlPropertyID[i]);
iItemDrawHeight += MY_PIC_PROPERTY_ADDITIONAL_HEIGHT;
}
我无法访问它给我的所选文本“访问冲突读取位置 0x00000020”错误..
【问题讨论】:
-
你确定
GetCurSel不返回CB_ERR? -
没问题,我无法访问 CComboBox 数组。
-
什么时候初始化
p_ComboBoxes? -
在 OnInitDialog() 方法中。
-
组合框不需要两步构造吗?因此,您还需要在数组中的每个组合框上调用 Create()。
标签: c++ visual-studio-2008 visual-c++ mfc