流云の剑舞秋风

吾生也有涯 而知也无涯

博客园 首页 新随笔 联系 订阅 管理
1.新建对话框工程Test,在对话框上放上ListCtrl控件IDC_LIST1,连接变量名m_list,增加代码:
BOOL CTestDlg::OnInitDialog()
{
//
        m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    m_list.SetBkColor(RGB(
240,255,240));
    m_list.SetTextColor(RGB(
0,0,255));
//---------------------------------------------
       
//插入列字段
    m_list.InsertColumn(0,"学号",LVCFMT_LEFT,100);
    m_list.InsertColumn(
1,"姓名",LVCFMT_LEFT,100);
        
//插入行项目
    m_list.InsertItem(0,"20010540519");
    m_list.InsertItem(
1,"20010540520");
    m_list.InsertItem(
2,"20010540521");
        
//插入行内容
    m_list.SetItemText(0,1,"宫奇");
    m_list.SetItemText(
1,1,"杨建敏");
    m_list.SetItemText(
2,1,"张威");

    
return TRUE;  
}
2.新建对话框IDD_EDIT, 用来做修改、删除、添加记录等,添加2个编辑框,分别连接变量m_StudentID和m_StudentName,为它创建新的类CEditDlg,基类是CDialog;
3.为了使用上面的CEditDlg类  ,在TestDlg.cpp里的 #endif 之后加入#include "EditDlg.h";然后在主对话框上加入4个按钮修改(IDC_CHANGE)、删除(IDC_DELETE)、添加(IDC_ADD)、保存(IDC_SAVE),然后添加他们的响应函数如下:
void CTestDlg::OnChange() 
{    
//得到选择项的索引值
    POSITION pos=m_list.GetFirstSelectedItemPosition();
    m_nIndex
=m_list.GetNextSelectedItem(pos);

    
if(m_nIndex==-1)
    {
        MessageBox(
"请选择一项再修改!","提示",MB_ICONINFORMATION);
        
return;
    }

    CEditDlg edlg;
    edlg.m_StudentID
=m_list.GetItemText(m_nIndex,0);
    edlg.m_StudentName
=m_list.GetItemText(m_nIndex,1);
    
if(edlg.DoModal()==IDOK)
    {
        m_list.SetItemText(m_nIndex,
0,edlg.m_StudentID);
        m_list.SetItemText(m_nIndex,
1,edlg.m_StudentName);
    }
}

void CTestDlg::OnDelete() 
{    
    POSITION pos
=m_list.GetFirstSelectedItemPosition();
    m_nIndex
=m_list.GetNextSelectedItem(pos);

    
if(m_nIndex==-1)
    {
        MessageBox(
"请选择一项!","提示",MB_ICONINFORMATION);
        
return;
    }
    m_list.DeleteItem(m_nIndex);
//下面这2句的作用是刷新当前所指记录位置,以便连续删除
//    UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
//    m_list.SetItemState(m_nIndex-1, flag, flag);    
}

void CTestDlg::OnAdd() 
{
    CEditDlg edlg;
    
if(edlg.DoModal()==IDOK)
    {
        
if(edlg.m_StudentID=="")            
            
return;        
        m_nIndex
=m_list.GetItemCount();
        m_list.InsertItem(m_nIndex,edlg.m_StudentID);    
        m_list.SetItemText(m_nIndex,
1,edlg.m_StudentName);        
    }
}

void CTestDlg::OnSave() 
{    
    CStdioFile sf;
    
if(sf.Open("资料.txt",CFile::modeCreate | CFile::modeWrite))
    {
        CString strOut;
        strOut
="学号\t\t姓名\r\n";
        sf.WriteString(strOut);
        
for(int i=0;i<m_list.GetItemCount();i++
        {
            strOut
=m_list.GetItemText(i,0+ "\t"+m_list.GetItemText(i,1)+"\r\n";
            sf.WriteString(strOut);
        }    
        sf.Close();
        MessageBox(
"保存成功!","提示",MB_ICONINFORMATION);
    }
    
else
        MessageBox(
"保存失败!","提示",MB_ICONINFORMATION);  
}

好了,现在就编译运行吧~你看到的结果应该是(现在上传不了图,暂时,以后会贴上来的)
posted on 2005-05-17 14:32  流云  阅读(1809)  评论(0编辑  收藏  举报