www.pudn.com > 单文档多视图.rar > View3.cpp


// View3.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "SdiMulti.h" 
#include "View3.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// C3View 
 
IMPLEMENT_DYNCREATE(C3View, CListView) 
 
C3View::C3View() 
{ 
} 
 
C3View::~C3View() 
{ 
} 
 
 
BEGIN_MESSAGE_MAP(C3View, CListView) 
	//{{AFX_MSG_MAP(C3View) 
		// NOTE - the ClassWizard will add and remove mapping macros here. 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// C3View drawing 
 
void C3View::OnDraw(CDC* pDC) 
{ 
	CDocument* pDoc = GetDocument(); 
	// TODO: add draw code here 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// C3View diagnostics 
 
#ifdef _DEBUG 
void C3View::AssertValid() const 
{ 
	CListView::AssertValid(); 
} 
 
void C3View::Dump(CDumpContext& dc) const 
{ 
	CListView::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// C3View message handlers 
 
#define NUM_COLUMNS	4 
#define NUM_ITEMS	7 
 
static _TCHAR *_gszColumnLabel[NUM_COLUMNS]= 
{ 
	_T("Color"), _T("Red"), _T("Green"), _T("Blue") 
}; 
 
static int _gnColumnFmt[NUM_COLUMNS]= 
{ 
	LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_RIGHT, LVCFMT_RIGHT, 
}; 
 
static int _gnColumnWidth[NUM_COLUMNS]= 
{ 
	100, 50, 50, 50 
}; 
 
static _TCHAR *_gszItem[NUM_ITEMS][NUM_COLUMNS]= 
{ 
	_T("Yellow"),  _T("255"), _T("255"), _T("0"), 
	_T("Red"),     _T("255"), _T("0"),   _T("0"), 
	_T("Green"),   _T("0"),   _T("255"), _T("0"), 
	_T("Magenta"), _T("255"), _T("0"),   _T("255"), 
	_T("Cyan"),    _T("0"),   _T("255"), _T("255"), 
	_T("Blue"),    _T("0"),   _T("0"),   _T("255"), 
	_T("Gray"),    _T("192"), _T("192"), _T("192"), 
}; 
 
void C3View::OnInitialUpdate()  
{ 
	CListView::OnInitialUpdate(); 
	CListCtrl& ListCtrl = GetListCtrl(); 
	ListCtrl.DeleteAllItems(); 
 
	m_LargeImageList.DeleteImageList();	// on new reuse this 
	m_SmallImageList.DeleteImageList(); 
	m_StateImageList.DeleteImageList(); 
	 
	m_LargeImageList.Create(IDB_LARGEICONS, 32, 1, RGB(255,255,255)); 
	m_SmallImageList.Create(IDB_SMALLICONS, 16, 1, RGB(255,255,255)); 
	m_StateImageList.Create(IDB_STATEICONS, 16, 1, RGB(255,0,0)); 
 
	m_LargeImageList.SetOverlayImage(NUM_ITEMS, 1); 
	m_SmallImageList.SetOverlayImage(NUM_ITEMS, 1); 
 
	ListCtrl.SetImageList(&m_LargeImageList, LVSIL_NORMAL); 
	ListCtrl.SetImageList(&m_SmallImageList, LVSIL_SMALL); 
	ListCtrl.SetImageList(&m_StateImageList, LVSIL_STATE); 
 
	int i, j; 
	LV_COLUMN lvc; 
 
	lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; 
 
	for (i = 0; i < NUM_COLUMNS; i++) 
	{ 
		lvc.iSubItem = i; 
		lvc.pszText = _gszColumnLabel[i]; 
		lvc.cx = _gnColumnWidth[i]; 
		lvc.fmt = _gnColumnFmt[i]; 
		ListCtrl.DeleteColumn(i); 
		ListCtrl.InsertColumn(i, &lvc); 
	}    
 
// insert items 
 
	LV_ITEM lvi; 
 
  	for (i = 0; i < NUM_ITEMS; i++) 
	{ 
		lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE; 
		lvi.iItem = i; 
		lvi.iSubItem = 0; 
		lvi.pszText = _gszItem[i][0]; 
		lvi.iImage = i; 
		lvi.stateMask = LVIS_STATEIMAGEMASK; 
		lvi.state = INDEXTOSTATEIMAGEMASK(1); 
 
		ListCtrl.InsertItem(&lvi); 
	} 
 
// set item text for additional columns 
 
// add more than 1 block to test print page size (jcl) 
	for (i = 0; i < NUM_ITEMS; i++)  
	    for (j = 1; j < NUM_COLUMNS; j++) 
			ListCtrl.SetItemText(i, j, _gszItem[i][j]); 
} 
 
BOOL C3View::PreCreateWindow(CREATESTRUCT& cs)  
{ 
	cs.style|= LVS_SHOWSELALWAYS | LVS_REPORT; 
	return CListView::PreCreateWindow(cs); 
}