CListCtrl控件.docx

上传人:b****3 文档编号:3650653 上传时间:2022-11-24 格式:DOCX 页数:10 大小:29.80KB
下载 相关 举报
CListCtrl控件.docx_第1页
第1页 / 共10页
CListCtrl控件.docx_第2页
第2页 / 共10页
CListCtrl控件.docx_第3页
第3页 / 共10页
CListCtrl控件.docx_第4页
第4页 / 共10页
CListCtrl控件.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

CListCtrl控件.docx

《CListCtrl控件.docx》由会员分享,可在线阅读,更多相关《CListCtrl控件.docx(10页珍藏版)》请在冰豆网上搜索。

CListCtrl控件.docx

CListCtrl控件

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

        InsertItem在MSDN中的函数原型如下

       intInsertItem(constLVITEM*pItem);

      intInsertItem(intnItem,LPCTSTRlpszItem);

      intInsertItem(intnItem,LPCTSTRlpszItem,intnImage);

     intInsertItem(UINTnMask,intnItem,LPCTSTRlpszItem,UINTnState,UINTnStateMask,intnImage,LPARAMlParam);

    一般我们用的比较多的时第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函数的原型

   BOOLSetItemText(intnItem,intnSubItem,LPTSTRlpszText);

    ******************注意这个函数中的参数nItem就是INSERTITEM中的NITEM,

   也就是说InsertItem是向控件声请一行来放数据,记住只是声请,那么方数据的工作就又SETITEMTEXT来实现

   举例如下:

     CListCtrlm_listctrl;

    m_listctrl=newClistCtrl();

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

  ,bigRect,this,IDC_LIST1

    );

    

    m_listctrl.InsertItem(0,"01");

    m_SetItemtext(0,1,"1");

    m_SetItemtext(0,2,"2");

     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

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

    获得可以这样的道intcolumns=m_listctr.GetHeaderCtrl()->GetItemCount();

    获得可以这样的道int  rows=m_listctrl.GetItemCount();

     

      下面附一个本人学习的实例

  //DataView.cpp:

implementationoftheCDataViewclass

//

#include"stdafx.h"

#include"Data.h"

#include"DataDoc.h"

#include"DataView.h"

#include"EditDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_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

//Standardprintingcommands

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()

/////////////////////////////////////////////////////////////////////////////

//CDataViewconstruction/destruction

CDataView:

:

CDataView()

{

//TODO:

addconstructioncodehere

   m_nIndex=-1;

}

CDataView:

:

~CDataView()

{

}

BOOLCDataView:

:

PreCreateWindow(CREATESTRUCT&cs)

{

//TODO:

ModifytheWindowclassorstylesherebymodifying

//theCREATESTRUCTcs

returnCView:

:

PreCreateWindow(cs);

}

/////////////////////////////////////////////////////////////////////////////

//CDataViewdrawing

voidCDataView:

:

OnDraw(CDC*pDC)

{

CDataDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

//TODO:

adddrawcodefornativedatahere

}

/////////////////////////////////////////////////////////////////////////////

//CDataViewprinting

BOOLCDataView:

:

OnPreparePrinting(CPrintInfo*pInfo)

{

//defaultpreparation

returnDoPreparePrinting(pInfo);

}

voidCDataView:

:

OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

{

//TODO:

addextrainitializationbeforeprinting

}

voidCDataView:

:

OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

{

//TODO:

addcleanupafterprinting

}

/////////////////////////////////////////////////////////////////////////////

//CDataViewdiagnostics

#ifdef_DEBUG

voidCDataView:

:

AssertValid()const

{

CView:

:

AssertValid();

}

voidCDataView:

:

Dump(CDumpContext&dc)const

{

CView:

:

Dump(dc);

}

CDataDoc*CDataView:

:

GetDocument()//non-debugversionisinline

{

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDataDoc)));

return(CDataDoc*)m_pDocument;

}

#endif//_DEBUG

/////////////////////////////////////////////////////////////////////////////

//CDataViewmessagehandlers

voidCDataView:

:

OnInitialUpdate()

{

CView:

:

OnInitialUpdate();

//TODO:

Addyourspecializedcodehereand/orcallthebaseclass

   CDC*dc=GetDC();

CRectrect;

this->GetClientRect(&rect);

   CStringstr="加载数据库资源到列表中";

CSizesz=dc->GetTextExtent(str);

rect.right=sz.cx;

rect.bottom=sz.cy;

CStatic*state=newCStatic;

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));

}

voidCDataView:

:

InitListCtrl(CRectrect)

{

CRectbigRect;

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=newCFont();

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

  "Arial");  

   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,"ID",LVCFMT_LEFT,100,-1);

m_ListCtrl.InsertColumn(1,"用户名",LVCFMT_LEFT,100,-1);

m_ListCtrl.InsertColumn(2,"密码",LVCFMT_LEFT,200,-1);

m_ListCtrl.InsertItem(0,"01");

m_ListCtrl.SetItemText(0,1,"chetnao");

m_ListCtrl.SetItemText(0,2,"921984");

   m_ListCtrl.InsertItem(1,"02");

m_ListCtrl.SetItemText(1,1,"mada");

m_ListCtrl.SetItemText(1,2,"345678");

m_ListCtrl.InsertItem(2,"03");

m_ListCtrl.SetItemText(2,1,"luoxian");

m_ListCtrl.SetItemText(2,2,"987654");

}

externCDataApptheApp;

voidCDataView:

:

OnUser()

{

//TODO:

Addyourcommandhandlercodehere

   _RecordsetPtrm_pRecordset;

try

{

  m_pRecordset=theApp.m_pConnection->Execute("select*fromuser12",NULL,adCmdText);

}

catch(_com_errore)

{

  AfxMessageBox(e.ErrorMessage());

  AfxMessageBox(e.Description());

  CStringstr;

  str.Format("%ld",e.Error);

  AfxMessageBox(str);

  return;

}

if(m_pRecordset->BOF)

{

  MessageBox("表中无记录");

  return;

}

else

{

  intlen=m_ListCtrl.GetHeaderCtrl()->GetItemCount();

  while(!

m_pRecordset->adoEOF)

  {

           m_ListCtrl.InsertItem(2,(_bstr_t)m_pRecordset->GetCollect("ID"));

     m_ListCtrl.InsertItem(1,(_bstr_t)m_pRecordset->GetCollect("username"));

        m_ListCtrl.InsertItem(0,(_bstr_t)m_pRecordset->GetCollect("password"));

   /*for(inti=0;i

   {

    m_ListCtrl.SetItemText(i,0,(_bstr_t)m_pRecordset->GetCollect("ID"));

    m_ListCtrl.SetItemText(i,1,(_bstr_t)m_pRecordset->GetCollect("username"));

    m_ListCtrl.SetItemText(i,2,(_bstr_t)m_pRecordset->GetCollect("password"));

   }*/

   m_pRecordset->MoveNext();

  }

}

}

voidCDataView:

:

OnClickList1(NMHDR*pNMHDR,LRESULT*pResult)

{

POSITIONpos=m_ListCtrl.GetFirstSelectedItemPosition();

   m_nIndex=m_ListCtrl.GetNextSelectedItem(pos);

}

voidCDataView:

:

OnDblclkList1(NMHDR*pNMHDR,LRESULT*pResult)

{

   POSITIONpos=m_ListCtrl.GetFirstSelectedItemPosition();

   m_nIndex=m_ListCtrl.GetNextSelectedItem(pos);

   CEditDlgdlg;

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;

}

voidCDataView:

:

OnUp()

{

//TODO:

Addyourcommandhandlercodehere

   m_ListCtrl.SetFocus();

if(m_nIndex==-1)

{

  MessageBox("请选择一行!

");

  return;

}

if(m_nIndex==0)

{

  MessageBox("你选中的行已经时顶行!

");

  return;

}

CStringstrNo,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);

}

voidCDataView:

:

OnKillfocusList1(NMHDR*pNMHDR,LRESULT*pResult)

{

m_nIndex=-1;

}

voidCDataView:

:

OnDown()

{

//TODO:

Addyourcommandhandlercodehere

m_ListCtrl.SetFocus();

   if(m_nIndex==-1)

{

  MessageBox("请选择一行!

");

  return;

}

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

{

  MessageBox("已经时最后一行!

");

  return;

}

CStringstrNo,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_nI

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1