⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lstvwdlg.cpp

📁 《Visual C++ MFC编程实例》配套代码,如果大家正在学习此教程
💻 CPP
字号:
// LstVwDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Styles.h"
#include "ListView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CListViewDlg dialog


CListViewDlg::CListViewDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CListViewDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CListViewDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CListViewDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CListViewDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CListViewDlg, CDialog)
	//{{AFX_MSG_MAP(CListViewDlg)
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CListViewDlg message handlers

#define NSTYLES 7
#define XSPACING 7
#define YSPACING 20

int CListViewDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;

	UINT styles[NSTYLES]={ 
	LVS_ICON|LVS_ALIGNTOP,
	LVS_REPORT         ,
	LVS_SMALLICON      ,
	LVS_LIST           ,
	LVS_NOCOLUMNHEADER | LVS_REPORT ,
	LVS_NOSORTHEADER | LVS_REPORT,   
	LVS_REPORT         ,
	};

	CString sStyles[NSTYLES]={ 
	"LVS_ICON | LVS_ALIGNTOP (Default)",
	"LVS_REPORT",
	"LVS_SMALLICON",
	"LVS_LIST",
	"LVS_REPORT | LVS_NOCOLUMNHEADER",
	"LVS_REPORT | LVS_NOSORTHEADER",
	"LVS_REPORT w/ LVS_EX_GRIDLINES"
	};

// undrawn
//LVS_TYPEMASK            0x0003
//LVS_TYPESTYLEMASK       0xfc00
//LVS_ALIGNMASK           0x0c00
//	LVS_NOSCROLL       ,
//	LVS_SINGLESEL      ,
//	LVS_SHOWSELALWAYS  ,
//	LVS_SORTASCENDING  ,
//	LVS_SORTDESCENDING ,
//	LVS_SHAREIMAGELISTS,
//	LVS_NOLABELWRAP    ,
//	LVS_AUTOARRANGE    ,
//	LVS_EDITLABELS     ,
//	LVS_OWNERDATA      ,
//	LVS_OWNERDRAWFIXED ,

	CSize szStatic(180,40);
	CSize szListView(200,80);
	CRect rect(9999,-szListView.cy+YSPACING,0,0);

	m_imageState.Create(IDB_STATUS_BITMAP, 16, 1, RGB(0,0,0));

	m_imageSmall.Create(IDB_SMALL_BITMAP, 16, 1, RGB(0,0,0));

	m_imageLarge.Create(IDB_LARGE_BITMAP, 32, 1, RGB(0,0,0));


	int i=0;
	while (i<NSTYLES)
	{
		rect.left=XSPACING;
		rect.top+=szListView.cy+YSPACING;

		for (int j=0;j<2&&i<NSTYLES;j++)
		{
			CStatic *pStatic=new CStatic;
			m_staticList.AddTail(pStatic);
			CListCtrl *pListView=new CListCtrl;
			m_ListViewList.AddTail(pListView);
			rect.right=rect.left+szStatic.cx;
			rect.bottom=rect.top+szStatic.cy;
			pStatic->Create(sStyles[i],SS_RIGHT|WS_VISIBLE|WS_CHILD,rect,this);
			rect.OffsetRect(szStatic.cx+XSPACING,0);
			rect.right=rect.left+szListView.cx;
			rect.bottom=rect.top+szListView.cy;
			pListView->CreateEx(WS_EX_CLIENTEDGE,_T("SysListView32"),"", styles[i]|WS_VISIBLE|WS_CHILD, rect, this, 1000+i);
			rect.OffsetRect(szListView.cx+XSPACING,0);


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

			pListView->SetImageList(&m_imageLarge, LVSIL_NORMAL);
			pListView->SetImageList(&m_imageSmall, LVSIL_SMALL);
			pListView->SetImageList(&m_imageState, LVSIL_STATE);

			if (i==6)
				pListView->SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);


			CDC* dc = GetDC();
	
			TEXTMETRIC tm;
			dc->GetTextMetrics(&tm);
			ReleaseDC(dc);

			pListView->InsertColumn(0,"Column 1",LVCFMT_LEFT,10*tm.tmAveCharWidth,0);
			pListView->InsertColumn(1,"Column 2",LVCFMT_LEFT,10*tm.tmAveCharWidth,1);

			LV_ITEM lvi;
			lvi.mask = LVIF_TEXT | LVIF_IMAGE;
			lvi.iItem = 0;
			lvi.iSubItem = 0;

			lvi.pszText = "Item 1";
			lvi.iImage = 1;
			int inx=pListView->InsertItem(&lvi);
			pListView->SetItemText(inx, 1,  "Sub Item 1");
			pListView->SetItemState(inx, INDEXTOSTATEIMAGEMASK(1), 
							LVIS_STATEIMAGEMASK);

			lvi.pszText = "Item 2";
			lvi.iImage = 2;
			inx=pListView->InsertItem(&lvi);
			pListView->SetItemText(inx, 1,  "Sub Item 2");

			lvi.pszText = "Item 3";
			lvi.iImage = 1;
			inx=pListView->InsertItem(&lvi);
			pListView->SetItemText(inx, 1,  "Sub Item 3");

			lvi.pszText = "Item 4";
			lvi.iImage = 2;
			inx=pListView->InsertItem(&lvi);
			pListView->SetItemText(inx, 1,  "Sub Item 4");

			lvi.pszText = "Item 5";
			lvi.iImage = 1;
			inx=pListView->InsertItem(&lvi);
			pListView->SetItemText(inx, 1,  "Sub Item 5");
			pListView->SetItemState(inx, INDEXTOSTATEIMAGEMASK(2), 
							LVIS_STATEIMAGEMASK);

			lvi.pszText = "Item 6";
			lvi.iImage = 2;
			inx=pListView->InsertItem(&lvi);
			pListView->SetItemText(inx, 1,  "Sub Item 6");


			i++;
		}
	}
	
	return 0;
}

void CListViewDlg::PostNcDestroy() 
{
	while (m_ListViewList.GetCount())
	{
		delete m_ListViewList.RemoveHead();
	}
	while (m_staticList.GetCount())
	{
		delete m_staticList.RemoveHead();
	}
	
	CDialog::PostNcDestroy();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -