创建MFC对话框程序一般流程:
1、在“..Dlg.h”中添加声明
2、在 “Dlg.cpp”中添加实现
ListDlg.h中所添加的私有属性和函数
private:
void GetData();
CString m_StrYM;
CString m_StrMember;
CString m_StrSex;
ListDlg.cpp
BOOL CListDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
//初始化列表视图,设置列表框控件的扩展风格
//整行选择/ 有表格线/ 表头/ 单击激活
DWORD dwExStyle = LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE;
//报表风格/单行选择/高亮显示选择行
m_ListInfo.ModifyStyle(0, LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS);
m_ListInfo.SetExtendedStyle(dwExStyle);
//初始化列表,插入6列表头
m_ListInfo.InsertColumn(0, "姓名", LVCFMT_CENTER, 60, 0);
m_ListInfo.InsertColumn(1, "性别", LVCFMT_CENTER, 60, 0);
m_ListInfo.InsertColumn(2, "出生年月", LVCFMT_CENTER, 85, 0);
m_ListInfo.InsertColumn(3, "职称", LVCFMT_CENTER, 65, 0);
m_ListInfo.InsertColumn(4, "工作单位", LVCFMT_CENTER, 120, 0);
m_ListInfo.InsertColumn(5, "是否会员", LVCFMT_CENTER, 65, 0);
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CListDlg::OnButtonAdd()
{
// TODO: Add your control notification handler code here
GetData();
int nIndex = m_ListInfo.GetItemCount(); //获取当前记录条数
//定义项目(行)的数据结构
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT;
lvItem.iItem = nIndex; //第nIndex行
lvItem.iSubItem = 0; //第一列,姓名
lvItem.pszText = (char *)(LPCTSTR)m_Name;
m_ListInfo.InsertItem(&lvItem); //在最后一行插入记录
//设置该行的其它列的值
m_ListInfo.SetItemText(nIndex, 1, m_StrSex); //性别
m_ListInfo.SetItemText(nIndex, 2, m_Year); //出生年月
m_ListInfo.SetItemText(nIndex, 3, m_Title); //职称
m_ListInfo.SetItemText(nIndex, 4, m_Unit);
m_ListInfo.SetItemText(nIndex, 5, m_StrMember);
m_Name = "";
m_Unit = "";
m_Title = "";
m_Sex = 0;
m_Member = true;
m_Year = "";
m_Month = "";
UpdateData(FALSE);
}
void CListDlg::OnButtonDel()
{
// TODO: Add your control notification handler code here
int nItem = m_ListInfo.GetNextItem(-1, LVNI_SELECTED);
if(nItem != -1)
m_ListInfo.DeleteItem(nItem);
m_Name = "";
m_Unit = "";
m_Title = "";
m_Sex = 0;
m_Member = true;
m_Year = "";
m_Month = "";
UpdateData(FALSE);
}
void CListDlg::OnButtonEdit()
{
// TODO: Add your control notification handler code here
GetData();
int nItem = m_ListInfo.GetNextItem(-1, LVNI_SELECTED);
if(nItem != -1)
{
m_ListInfo.SetItemText(nItem, 0, m_Name);
m_ListInfo.SetItemText(nItem, 1, m_StrSex);
m_ListInfo.SetItemText(nItem, 2, m_StrYM);
m_ListInfo.SetItemText(nItem, 3, m_Title);
m_ListInfo.SetItemText(nItem, 4, m_Unit);
m_ListInfo.SetItemText(nItem, 5, m_StrMember);
}
}
void CListDlg::GetData()
{
UpdateData();
if(m_Sex == 0)
m_StrSex = "男";
else
m_StrSex = "女";
if(m_Member)
m_StrMember = "是";
else
m_StrMember = "否";
m_StrYM = m_Year + "年" + m_Month + "月";
}