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