当前位置: 代码迷 >> 综合 >> 3.MFC中的CListCtrl,CComboBox,CEdit,CTabCtrl
  详细解决方案

3.MFC中的CListCtrl,CComboBox,CEdit,CTabCtrl

热度:10   发布时间:2023-12-16 16:18:55.0

CListCtrl

  1.一般初始化,将对话框编辑器中表格控件的风格改为report,先加入字段名(列名),还可以额外设置风格(此处添加网格线)

m_list.InsertColumn(0, L"姓名",0,100);m_list.InsertColumn(1, L"年龄",0, 150);m_list.InsertColumn(2, L"地址", 0, 150);m_list.InsertColumn(3, L"工资", 0, 150);DWORD dwStyle = m_list.GetExtendedStyle();dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)m_list.SetExtendedStyle(dwStyle);/*m_list.ModifyStyleEx(NULL, LVS_EX_GRIDLINES);吐槽此函数,有时起作用有时没作用尤其在控件上的表现*/

2.按行按列添加数据条目

m_list.InsertItem(0,"王大人");m_list.SetItemText(0,1,"22");m_list.SetItemText(0,2,"山东省亚特兰蒂斯");m_list.SetItemText(0,3,"20000");

3.根据鼠标点击获得被点击的条目

POSITION pos = m_list.GetFirstSelectedItemPosition();int selnum=m_list.GetNextSelectedItem(pos);#两行代码获得最近一次被点击的条目的行m_list.DeleteItem(selnum);

4.修改数据如上添加数据

m_list.SetItemText(0,1,"20");m_list.SetItemText(0,2,"中国亚特兰蒂斯");m_list.SetItemText(0,3,"60000");

CComboBox

1.初始化,添加可选条目,设置初始显示条目

m_combox.AddString(L"神的领域");m_combox.AddString(L"恶魔的邂逅");m_combox.AddString(L"神奇领域");m_combox.SetCurSel(0);

2.鼠标点击选择后获得被选择的条目

int cursel=m_combox.GetCurSel();
CString curselstr;
switch(cursel) {case 0:curselstr=L"神的领域";break;case 1:curselstr=L"恶魔的邂逅";break;case 2:curselstr=L"神奇领域";break;}   

CEdit

1.非常简单的使用,也可以在类向导内建为value型变量配合update使用

CString str1;m_edit.GetWindowTextW(str1);//GetDlgItemText(IDC_EDIT1,str1) 也可以

CTabCtrl

1.编辑每个标签页对应的对话框模板,style设为child,border设为None并为此对话框建立类成员变量CPropertypage类型

2.初始化标签及标签页,包括位置等等 因为标签页面初始位置不在标签控件内

m_tab.InsertItem(0, L"第一个标签页");m_tab.InsertItem(1, L"第二个标签页");CRect rt,rect;m_tab.GetWindowRect(rect);ScreenToClient(rect);m_tab.GetItemRect(0, rt);rect.top += rt.Height() + 2;rect.DeflateRect(2, 2);m_page1.Create(IDD_DIALOG1, this);m_page1.MoveWindow(rect);m_Page2.Create(IDD_DIALOG2, this);m_Page2.MoveWindow(rect);m_page1.SetFocus();m_page1.ShowWindow(SW_SHOW);

3.点击标签实现标签页切换功能,在消息类型为TCN_SELCHANGE的消息映射函数添加代码如下:

void CMFCApplication3Dlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{// TODO: 在此添加控件通知处理程序代码int nSel = m_tab.GetCurSel();m_page1.ShowWindow(SW_HIDE);m_Page2.ShowWindow(SW_HIDE);switch (nSel) {case 0:m_page1.SetFocus();m_page1.ShowWindow(SW_SHOW);break;case 1:m_Page2.SetFocus();m_Page2.ShowWindow(SW_SHOW);}*pResult = 0;
}