点击性别列单元格则看到下拉列表效果,如下:
在单元格编辑框中写东西的时候往往喜欢按回车,这个时候如果不加处理的话会发现一个很崩溃的现象,程序直接退出了。这个可以重载对话框类的OnOK()函数来避免。就是在对话框类声明中添加
afx_msg void OnOK();然后将其定义为什么都不做:
void CNephoVisionDatabaseDlg::OnOK()
{
} 这样就不会有按回车直接退出程序的事情发生了。
此外,如果希望在编辑框或者下拉列表框失去焦点的时候就将数据列表中的相关信息更新,可以响应动态创建的这两个控件的失去焦点消息,方法如下: 在对话框类声明中添加
afx_msg void OnKillfocusEdit();//动态生成编辑框失去焦点响应函数 afx_msg void OnKillfocusCcomboBox();//动态生成下拉列表框失去焦点响应函数在对话框类实现的消息映射描述中添加
ON_EN_KILLFOCUS(IDC_EDIT_CREATEID, &CNephoVisionDatabaseDlg::OnKillfocusEdit)//添加动态生成编辑框的失去焦点响应函数 ON_CBN_KILLFOCUS(IDC_COMBOX_CREATEID, &CNephoVisionDatabaseDlg::OnKillfocusCcomboBox)这样这两个控件在失去焦点的时候就会响应分别定义好的函数,我们只需要在相应的函数添加处理代码就可以了:
void CNephoVisionDatabaseDlg::OnKillfocusEdit()
{
if (haveeditcreate == true)//如果之前创建了编辑框就销毁掉
{
distroyEdit(&m_list, &m_Edit, e_Item, e_SubItem);//销毁单元格编辑框对象
haveeditcreate = false;
}
if (haveccomboboxcreate == true)//如果之前创建了下拉列表框就销毁掉
{
distroyCcombobox(&m_list, &m_comBox, e_Item, e_SubItem);
haveccomboboxcreate = false;
}
}
void CNephoVisionDatabaseDlg::OnKillfocusCcomboBox()
{
if (haveeditcreate == true)//如果之前创建了编辑框就销毁掉
{
distroyEdit(&m_list, &m_Edit, e_Item, e_SubItem);//销毁单元格编辑框对象
haveeditcreate = false;
}
if (haveccomboboxcreate == true)//如果之前创建了下拉列表框就销毁掉
{
distroyCcombobox(&m_list, &m_comBox, e_Item, e_SubItem);
haveccomboboxcreate = false;
}
}