`
ychw365
  • 浏览: 53393 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
社区版块
存档分类
最新评论

LISTBOX和LIST CONTROL的项目增加方法

MFC 
阅读更多

1、LIST CONTROL(report方式):

(1)类的方式
A.增加列
 LVCOLUMN lv;
 lv. mask=LVCF_TEXT|LVCF_FMT|LVCF_WIDTH ;
 lv. fmt=LVCFMT_CENTER ;
 lv.cx=100;
 lv.pszText="编号";
 lv.cchTextMax=sizeof(lv.pszText);
 lv.iSubItem =0;
 lv.iOrder =0;
 m_list->InsertColumn(0,&lv);
 
 lv.pszText="名称";
 lv.cchTextMax=sizeof(lv.pszText);
 lv.iSubItem =1;
 lv.iOrder =1;
   m_list->InsertColumn(1,&lv);
 
 lv.pszText="简称";
 lv.cchTextMax=sizeof(lv.pszText);
 lv.iSubItem =2;
 lv.iOrder =2;
 m_list->InsertColumn(2,&lv);
B.增加行
CListCtrl *proclist;
proclist=(CListCtrl *)GetDlgItem(IDC_PROCLIST);
int nItem = proclist->InsertItem(0,(char*)("vvvv"));
proclist->SetItem(nItem,1,LVIF_TEXT,(char*)("ffffff"),0,0,0,0);
 (2)非类的方式
A.增加列
 LVCOLUMN lv;
 lv. mask=LVCF_TEXT|LVCF_FMT|LVCF_WIDTH;
 lv. fmt=LVCFMT_CENTER ;
 lv.cx=100;
 lv.pszText="第一项";
 lv.cchTextMax=sizeof(lv.pszText);
 lv.iSubItem =0;
 lv.iOrder =0;
 SendDlgItemMessage(IDC_PROCLIST,LVM_INSERTCOLUMN,0,(LPARAM)&lv);
 
 lv. mask=LVCF_TEXT|LVCF_FMT|LVCF_WIDTH ;
 lv. fmt=LVCFMT_CENTER ;
 lv.cx=100;
 lv.pszText="第二项";
 lv.cchTextMax=sizeof(lv.pszText);
 lv.iSubItem =1;
 lv.iOrder =1;
 SendDlgItemMessage(IDC_PROCLIST,LVM_INSERTCOLUMN,1,(LPARAM)&lv);
 lv. mask=LVCF_TEXT|LVCF_FMT|LVCF_WIDTH;
 lv. fmt=LVCFMT_CENTER ;
 lv.cx=100;
 lv.pszText="第三项";
 lv.cchTextMax=sizeof(lv.pszText);
 lv.iSubItem =2;
 lv.iOrder =2;
 SendDlgItemMessage(IDC_PROCLIST,LVM_INSERTCOLUMN,2,(LPARAM)&lv);
 
B.增加行
 LVITEM procinfo;
 procinfo.iItem=0;
 procinfo.mask=LVIF_TEXT;
 procinfo.pszText=(LPTSTR)("aaaaa");
 procinfo.iSubItem=0;
 SendDlgItemMessage(IDC_PROCLIST,LVM_INSERTITEM,0,(LPARAM)&procinfo);
 procinfo.iItem=0;
 procinfo.mask=LVIF_TEXT;
 procinfo.pszText=(LPTSTR)("bbbbb");
 procinfo.iSubItem=1;
 SendDlgItemMessage(IDC_PROCLIST,LVM_SETITEMTEXT,0,(LPARAM)&procinfo);
 procinfo.iItem=0;
 procinfo.mask=LVIF_TEXT;
 procinfo.pszText=(LPTSTR)("ccccccccc");
 procinfo.iSubItem=2;
 SendDlgItemMessage(IDC_PROCLIST,LVM_SETITEMTEXT,0,(LPARAM)&procinfo);
 procinfo.iItem=0;
 procinfo.mask=LVIF_TEXT;
 procinfo.pszText=(LPTSTR)("ddddddd");
 procinfo.iSubItem=3;
 SendDlgItemMessage(IDC_PROCLIST,LVM_SETITEMTEXT,0,(LPARAM)&procinfo);
2、LISTBOX:
(1)类的方式
 CListBox *proclist;
 proclist=(CListBox*)GetDlgItem(IDC_PROCLIST);
 proclist->AddString("ssssssssssssss");
(2)非类的方式
 SendDlgItemMessage(IDC_PROCLIST,LB_ADDSTRING,0,(LPARAM)("ffffff"));
何在MFC中使用LISTBOX控件。实例如下:

一。首先新建一个Single或者对话框类型的MFC.EXE工种。

二。插入一个Dialog,然后新建一个类CDlgList,我们可以利用这个控件显示项目,也可实现多选,得到选项总数等.其源程序如下:

// DlgList.cpp : implementation file
//

#include "stdafx.h"
#include "testvc.h"

#include "DlgList.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgList dialog


CDlgList::CDlgList(CWnd* pParent /*=NULL*/)
: CDialog(CDlgList::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgList)
//}}AFX_DATA_INIT
}


void CDlgList::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgList)
DDX_Control(pDX, IDC_BUTTON1, m_Del);
DDX_Control(pDX, IDC_EDIT1, m_Edit);
DDX_Control(pDX, IDC_LIST1, m_Lst);
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgList, CDialog)
//{{AFX_MSG_MAP(CDlgList)
ON_BN_CLICKED(IDC_BUTTON1, OnAddString)
ON_BN_CLICKED(IDC_BUTTON2, OnDel)
ON_BN_CLICKED(IDC_BUTTON5, OnClear)
ON_BN_CLICKED(IDC_BUTTON3, OnGetCount)
ON_BN_CLICKED(IDC_BUTTON4, OnGetCurSel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgList message handlers

void CDlgList::OnAddString()
{
// TODO: Add your control notification handler code here
    CString str;
m_Edit.GetWindowText(str);
m_Lst.AddString(str);
   UpdateData(FALSE);
}

int CDlgList::DoModal()
{
// TODO: Add your specialized code here and/or call the base class

return CDialog::DoModal();
}

void CDlgList::OnDel()
{
// TODO: Add your control notification handler code here

   m_Lst.DeleteString(m_Lst.GetCurSel());
   UpdateData(FALSE);
}

void CDlgList::OnClear()
{
// TODO: Add your control notification handler code here
for(int i=0;i<m_Lst.GetCount();i++)
{m_Lst.DeleteString(i);i--;}
    UpdateData(FALSE);
}

void CDlgList::OnGetCount()
{
// TODO: Add your control notification handler code here
CString str;
str.Format("List中共有%d项",m_Lst.GetCount());
AfxMessageBox(str);
    
}

void CDlgList::OnGetCurSel()
{
// TODO: Add your control notification handler code here

// AfxMessageBox(str);
   CString str,strMess;
   for (int i=0;i < m_Lst.GetCount();i++)
   {
     str.Format(_T("item %d: 您的选择状态是%s\r\n"),i,m_Lst.GetSel( i ) > 0 ? _T("true") : _T("false"));
      afxDump << str;
   strMess+=str;
   }

AfxMessageBox(strMess);
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics