列表控件ListCtrl的使用
生活随笔
收集整理的這篇文章主要介紹了
列表控件ListCtrl的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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);??
}
好了,現在就編譯運行吧~你看到的結果應該是(現在上傳不了圖,暫時,以后會貼上來的)
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);??
}
好了,現在就編譯運行吧~你看到的結果應該是(現在上傳不了圖,暫時,以后會貼上來的)
轉載于:https://www.cnblogs.com/yjm0105/archive/2005/05/17/157327.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的列表控件ListCtrl的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大量视频教程下载,全部是微软最新技术
- 下一篇: 建模的误区