引用
生活很美 的 MFC——ListBox(转)
映射宏:
ON_LBN_DBLCLK 鼠标双击
ON_EN_ERRSPACE 输入框无法分配内存时产生
ON_EN_KILLFOCUS / ON_EN_SETFOCUS 在输入框失去/得到输入焦点时产生
ON_LBN_SELCHANGE 选择的行发生改变
使用以上几种消息映射的方法为定义原型如:afx_msg void memberFxn( );的函数,并且定义形式如ON_Notification( id, memberFxn )的消息映射。如果在对话框中使用列表框,Class Wizard会自动列出相关的消息,并能自动产生消息映射代码。
GetDlgItem(IDC_LIST1)->EnableWindow(FALSE)提供控件的id.获得指向控件的指针
是CWnd的成员函数
->ShowWindow(SW_SHOW)
->ShowWindow(SW_HIDE)显示或隐藏窗口,也是CWnd的成员函数
CListBox::AddString()函数可以向列表框中添加项目
事例程序:
void COptionListDlg::On
AddButton() {
// TODO: Add your control notification handler co de here
UpdateData(TRUE);
if(m_edit==""){
MessageBox("请输入添加的数据");
return;
}
switch(m_radio){
case 0:
m_listbox1.AddString(m_edit);
break;
case 1:
m_listbox2.AddString(m_edit);
break;
case 2:
m_listbox3.AddString(m_edit);
break;
}
UpdateData(FALSE); }
CListBox::GetCurSel()返回当前列表框选择项目的序号
CListBox::GetText()函数可以根据当前列表框的序号读取当前选择的项目
程序:
void COptionListDlg::On
SelchangeList1() {
// TODO: Add your control notification handler co de here
UpdateData(TRUE);
int index = m_listbox1.GetCurSel();
if(index == LB_ERR)
m_edit="";
else
m_listbox1.GetText(index,m_edit);
UpdateData(FALSE); }
m_listbox1.DeleteString()
m_listbox1.InsertString()
程序:
void COptionListDlg::On
EditButton() {
// TODO: Add your control notification handler co de here
int index;
UpdateData(TRUE);
if(m_edit == ""){
MessageBox("请输入修改项目");
return;
}
switch(m_radio){
case 0:
index = m_listbox1.GetCurSel();
if(index == LB_ERR){
MessageBox("请选择要修改的项目");
return;
}
m_listbox1.DeleteString(index);
m_listbox1.InsertString(index,m_edit);
break;
case 1:
index = m_listbox2.GetCurSel();
if(index == LB_ERR){
MessageBox("请选择要修改的项目");
return;
}
m_listbox2.DeleteString(index);
m_listbox2.InsertString(index,m_edit);
break;
case 2:
index = m_listbox3.GetCurSel();
if(index == LB_ERR){
MessageBox("请选择要修改的项目");
return;
}
m_listbox3.DeleteString(index);
m_listbox3.InsertString(index,m_edit);
break;
} }
评论