CListCtrl控件中InsertItem和SettItemtext函数的用法简介

更新时间:2024-01-23 06:58:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

CListCtrl控件中InsertItem和SettItemtext函数的用法简介

本人初次用CListCtrl控件的时候,对于 InsertItem和SetrtItemtext两个函数的作用始终不是太懂,比如如果不先调用InsertItem这个函数,后面的InsertItemtext函数写了,也不起作用.查了MSDN,也没有收获,经过有人点拔,才恍然大悟.今天将经验说一下,希望有共同爱好者少走弯路.

InsertItem在MSDN中的函数原型如下 int InsertItem( const LVITEM* pItem ); int InsertItem( int nItem, LPCTSTR lpszItem );

int InsertItem( int nItem, LPCTSTR lpszItem, int nImage );

int InsertItem( UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState, UINT nStateMask, int nImage, LPARAM lParam );

一般我们用的比较多的时第2种和第三种,其中第三种时建立一个带有头标的项 要调用第三个,可以先声明一个CImageList对象 m_ImageList.Create(16,16,true,2,2);

m_ImageList.Add(theApp.LoadIcon(IDR_MAINFRAME)); m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL); 这样,控件中的每一行的开头就有一个应用程序图标

现在转入正题,先介绍一下INSERTITEM个个参数的意义 nItem: 控件中行的索引 lpszItem : 控件头的名字

......................................................................................................................................................................................................... SettItemtext函数的原型

BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText );

******************注意这个函数中的参数nItem就是INSERTITEM中的NITEM, 也就是说InsertItem是向控件声请一行来放数据,记住只是声请,那么方数据的工作就又SETITEMTEXT来实现 举例如下:

CListCtrl m_listctrl; m_listctrl = new ClistCtrl();

m_listctrl.Creae(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EDITLABELS

,bigRect,this,IDC_LIST1

);

m_listctrl.InsertItem(0,\ m_SetItemtext(0,1,\ m_SetItemtext(0,2,\ ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

至于要添多少多少个数据,就由你的控件由多少列了

获得可以这样的道 int columns= m_listctr.GetHeaderCtrl()->GetItemCount(); 获得可以这样的道 int rows= m_listctrl.GetItemCount(); // DataView.cpp : implementation of the CDataView class //

#include \#include \#include \#include \#include \#ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif

///////////////////////////////////////////////////////////////////////////// // CDataView

IMPLEMENT_DYNCREATE(CDataView, CView) BEGIN_MESSAGE_MAP(CDataView, CView) //{{AFX_MSG_MAP(CDataView) ON_COMMAND(IDM_USER, OnUser) ON_COMMAND(IDM_UP, OnUp) ON_COMMAND(IDM_DOWN, OnDown) ON_COMMAND(IDM_EDIT, OnEdit) ON_COMMAND(IDM_ADD, OnAdd) ON_COMMAND(IDM_DELETE, OnDelete) ON_COMMAND(IDM_SAVE, OnSave) //}}AFX_MSG_MAP

// Standard printing commands

ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1) ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1) ON_NOTIFY(NM_KILLFOCUS, IDC_LIST1, OnKillfocusList1) END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////// // CDataView construction/destruction CDataView::CDataView() {

// TODO: add construction code here m_nIndex = -1; }

CDataView::~CDataView() { }

BOOL CDataView::PreCreateWindow(CREATESTRUCT& cs) {

// TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs

return CView::PreCreateWindow(cs); }

///////////////////////////////////////////////////////////////////////////// // CDataView drawing

void CDataView::OnDraw(CDC* pDC) {

CDataDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);

// TODO: add draw code for native data here }

///////////////////////////////////////////////////////////////////////////// // CDataView printing

BOOL CDataView::OnPreparePrinting(CPrintInfo* pInfo) {

// default preparation

return DoPreparePrinting(pInfo); }

void CDataView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {

// TODO: add extra initialization before printing }

void CDataView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {

// TODO: add cleanup after printing }

///////////////////////////////////////////////////////////////////////////// // CDataView diagnostics #ifdef _DEBUG

void CDataView::AssertValid() const {

CView::AssertValid(); }

void CDataView::Dump(CDumpContext& dc) const {

CView::Dump(dc); }

CDataDoc* CDataView::GetDocument() // non-debug version is inline {

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDataDoc))); return (CDataDoc*)m_pDocument; }

#endif //_DEBUG

///////////////////////////////////////////////////////////////////////////// // CDataView message handlers void CDataView::OnInitialUpdate() {

CView::OnInitialUpdate();

// TODO: Add your specialized code here and/or call the base class

CDC *dc = GetDC(); CRect rect;

this->GetClientRect(&rect);

CString str = \加载数据库资源到列表中\ CSize sz = dc->GetTextExtent(str); rect.right = sz.cx; rect.bottom = sz.cy;

CStatic *state = new CStatic;

state->Create(str,WS_CHILD,rect,this); state->ShowWindow(SW_SHOW); this->ReleaseDC(dc);

InitListCtrl(rect);

m_ImageList.Create(16,16,true,2,2);

m_ImageList.Add(theApp.LoadIcon(IDR_MAINFRAME)); }

void CDataView::InitListCtrl(CRect rect) {

CRect bigRect;

this->GetClientRect(&bigRect); bigRect.top = rect.bottom;

m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EDITLABELS

,bigRect,this,IDC_LIST1); //m_ListCtrl.Insert(0,\用户名\ //m_ListCtrl.InsertItem(1,\密码\ CFont *m_pFont = new CFont();

m_pFont->CreateFont(20, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_NORMAL, // nWeight FALSE, // bItalic

FALSE, // bUnderline 0, // cStrikeOut

DEFAULT_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality

DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily \

m_ListCtrl.SetFont(m_pFont);

m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL);

m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); m_ListCtrl.SetBkColor(RGB(247,247,255)); m_ListCtrl.SetTextColor(RGB(0,0,255)); m_ListCtrl.SetTextBkColor(RGB(247,247,255)); m_ListCtrl.InsertColumn(0,\ m_ListCtrl.InsertColumn(1,\用户名\ m_ListCtrl.InsertColumn(2,\密码\ m_ListCtrl.InsertItem(0,\

m_ListCtrl.SetItemText(0,1,\ m_ListCtrl.SetItemText(0,2,\ m_ListCtrl.InsertItem(1,\ m_ListCtrl.SetItemText(1,1,\ m_ListCtrl.SetItemText(1,2,\ m_ListCtrl.InsertItem(2,\ m_ListCtrl.SetItemText(2,1,\ m_ListCtrl.SetItemText(2,2,\}

extern CDataApp theApp; void CDataView::OnUser() {

// TODO: Add your command handler code here _RecordsetPtr m_pRecordset; try {

m_pRecordset = theApp.m_pConnection->Execute(\

user12\ }

catch(_com_error e) {

AfxMessageBox(e.ErrorMessage()); AfxMessageBox(e.Description()); CString str;

str.Format(\ AfxMessageBox(str); return; }

if(m_pRecordset->BOF) {

MessageBox(\表中无记录\ return; } else {

int len = m_ListCtrl.GetHeaderCtrl()->GetItemCount(); while(!m_pRecordset->adoEOF) {

m_ListCtrl.InsertItem(2,(_bstr_t)m_pRecordset->GetCollect(\ m_ListCtrl.InsertItem(1,(_bstr_t)m_pRecordset->GetCollect(\ m_ListCtrl.InsertItem(0,(_bstr_t)m_pRecordset->GetCollect(\ /*for(int i=0;i

m_ListCtrl.SetItemText(i,0,(_bstr_t)m_pRecordset->GetCollect(\ m_ListCtrl.SetItemText(i,1,(_bstr_t)m_pRecordset->GetCollect(\ m_ListCtrl.SetItemText(i,2,(_bstr_t)m_pRecordset->GetCollect(\ }*/

m_pRecordset->MoveNext(); } } }

void CDataView::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)

{

POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); m_nIndex = m_ListCtrl.GetNextSelectedItem(pos); }

void CDataView::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) {

POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); m_nIndex = m_ListCtrl.GetNextSelectedItem(pos); CEditDlg dlg;

dlg.m_strNo = m_ListCtrl.GetItemText(m_nIndex,0); dlg.m_strName = m_ListCtrl.GetItemText(m_nIndex,1); dlg.m_strPassword = m_ListCtrl.GetItemText(m_nIndex,2); if(IDOK == dlg.DoModal()) {

m_ListCtrl.SetItemText(m_nIndex,0,dlg.m_strNo); m_ListCtrl.SetItemText(m_nIndex,1,dlg.m_strName); m_ListCtrl.SetItemText(m_nIndex,2,dlg.m_strPassword); }

*pResult = 0; }

void CDataView::OnUp() {

// TODO: Add your command handler code here m_ListCtrl.SetFocus(); if(m_nIndex == -1) {

MessageBox(\请选择一行!\ return ; }

if(m_nIndex == 0) {

MessageBox(\你选中的行已经时顶行!\ return ; }

CString strNo,strName,strPassword;

strNo = m_ListCtrl.GetItemText(m_nIndex,0); strName = m_ListCtrl.GetItemText(m_nIndex,1); strPassword = m_ListCtrl.GetItemText(m_nIndex,2); m_ListCtrl.DeleteItem(m_nIndex); m_ListCtrl.InsertItem(m_nIndex-1,strNo); m_ListCtrl.SetItemText(m_nIndex-1,1,strName); m_ListCtrl.SetItemText(m_nIndex-1,2,strPassword); m_nIndex--;

m_ListCtrl.SetItemState(m_nIndex,LVIS_FOCUSED|LVIS_SELECTED,LVIS_FOCUSED|LVIS_SELECTED); }

void CDataView::OnKillfocusList1(NMHDR* pNMHDR, LRESULT* pResult) {

m_nIndex = -1; }

void CDataView::OnDown() {

// TODO: Add your command handler code here m_ListCtrl.SetFocus(); if(m_nIndex == -1) {

MessageBox(\请选择一行!\ return ; }

if(m_nIndex == m_ListCtrl.GetItemCount()-1) {

MessageBox(\已经时最后一行!\ return ; }

CString strNo,strName,strPassword; strNo = m_ListCtrl.GetItemText(m_nIndex,0); strName = m_ListCtrl.GetItemText(m_nIndex,1); strPassword = m_ListCtrl.GetItemText(m_nIndex,2);

m_ListCtrl.DeleteItem(m_nIndex); m_ListCtrl.InsertItem(m_nIndex+1,strNo); m_ListCtrl.SetItemText(m_nIndex+1,1,strName); m_ListCtrl.SetItemText(m_nIndex+1,2,strPassword); m_nIndex++;

m_ListCtrl.SetItemState(m_nIndex,LVIS_FOCUSED|LVIS_SELECTED,LVIS_FOCUSED|LVIS_SELECTED); }

void CDataView::OnEdit() {

// TODO: Add your command handler code here

POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); m_nIndex = m_ListCtrl.GetNextSelectedItem(pos); if(m_nIndex == -1) {

MessageBox(\请选择一行!\ return ; }

CEditDlg dlg;

dlg.m_strNo = m_ListCtrl.GetItemText(m_nIndex,0); dlg.m_strName = m_ListCtrl.GetItemText(m_nIndex,1); dlg.m_strPassword = m_ListCtrl.GetItemText(m_nIndex,2); if(IDOK == dlg.DoModal()) {

m_ListCtrl.SetRedraw(false); m_ListCtrl.DeleteItem(m_nIndex);

m_ListCtrl.InsertItem(m_nIndex,dlg.m_strNo); m_ListCtrl.SetItemText(m_nIndex,1,dlg.m_strName); m_ListCtrl.SetItemText(m_nIndex,2,dlg.m_strPassword); m_ListCtrl.SetRedraw(true); } }

void CDataView::OnAdd() {

// TODO: Add your command handler code here

CEditDlg dlg;

if(dlg.DoModal() == IDOK) {

int count=m_ListCtrl.InsertItem(m_ListCtrl.GetItemCount(),dlg.m_strNo); m_ListCtrl.SetItemText(count,1,dlg.m_strName); m_ListCtrl.SetItemText(count,2,dlg.m_strPassword); } }

void CDataView::OnDelete() {

// TODO: Add your command handler code here if(m_nIndex == -1) {

MessageBox(\请选择一行!\ return ; }

m_ListCtrl.DeleteItem(m_nIndex);

UINT flag = LVIS_SELECTED|LVIS_FOCUSED; m_ListCtrl.SetItemState(m_nIndex-1, flag, flag); }

void CDataView::OnSave() {

// TODO: Add your command handler code here CFile f;

if(f.Open(\ {

CString str=\号/t/tusername/t/tpassword/r/n\ f.Write(str,strlen(str)+1);

for(int i=0;i

str=m_ListCtrl.GetItemText(i,0)+\ \ f.Write(str,strlen(str)+1); }

f.Close();

MessageBox(\保存成功!\ } else {

MessageBox(\保存失败!\ } }

本文来源:https://www.bwwdw.com/article/bg7o.html

Top