www.pudn.com > FlatHeader_demo.zip > FlatHeaderDemoView.cpp
// FlatHeaderDemoView.cpp : implementation of the CFlatHeaderDemoView class
//
#include "stdafx.h"
#include "FlatHeaderDemo.h"
#include "FlatHeaderDemoDoc.h"
#include "FlatHeaderDemoView.h"
#include "DialogDemo.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFlatHeaderDemoView
IMPLEMENT_DYNCREATE(CFlatHeaderDemoView, CListView)
BEGIN_MESSAGE_MAP(CFlatHeaderDemoView, CListView)
//{{AFX_MSG_MAP(CFlatHeaderDemoView)
ON_WM_CREATE()
ON_COMMAND(ID_VIEW_DIALOGDEMO, OnViewDialogdemo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFlatHeaderDemoView construction/destruction
CFlatHeaderDemoView::CFlatHeaderDemoView()
{
}
CFlatHeaderDemoView::~CFlatHeaderDemoView()
{
}
BOOL CFlatHeaderDemoView::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style |= LVS_REPORT;
return CListView::PreCreateWindow(cs);
}
int CFlatHeaderDemoView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CListView::OnCreate(lpCreateStruct) == -1)
return -1;
if (m_wndFlatHeader.SubclassWindow(GetListCtrl().GetDlgItem(0)->GetSafeHwnd()) == 0)
{
TRACE0("Unable to subclass header control.\n");
return -1;
}
return 0;
}
/////////////////////////////////////////////////////////////////////////////
// CFlatHeaderDemoView drawing
void CFlatHeaderDemoView::OnDraw(CDC* pDC)
{
CFlatHeaderDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
}
void CFlatHeaderDemoView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CListCtrl& lcList = GetListCtrl();
lcList.InsertColumn(0, "Column 1", LVCFMT_LEFT, 200);
lcList.InsertColumn(1, "Column 2", LVCFMT_CENTER, 200);
lcList.InsertColumn(2, "Column 3", LVCFMT_RIGHT, 200);
lcList.InsertItem(0, "Column 1", 0);
lcList.SetItemText(0, 1, "Column 2");
lcList.SetItemText(0, 2, "Column 3");
m_imagelist.Create(IDB_HEADER, 9, 1, RGB(255,255,255));
m_bitmap.LoadBitmap(IDB_BITMAP);
CFlatHeaderCtrl* pFlatHeader = (CFlatHeaderCtrl*)lcList.GetHeaderCtrl();
pFlatHeader->SetImageList(&m_imagelist);
HDITEM hditem;
hditem.mask = HDI_FORMAT|HDI_IMAGE; //|HDI_BITMAP; // <-- remove // to demo bitmaps
pFlatHeader->GetItem(0, &hditem);
hditem.fmt |= HDF_IMAGE; //|HDF_BITMAP;
hditem.iImage = 0;
hditem.hbm = (HBITMAP)m_bitmap;
pFlatHeader->SetItem(0, &hditem);
hditem.mask = HDI_FORMAT|HDI_IMAGE; //|HDI_BITMAP;
pFlatHeader->GetItem(1, &hditem);
hditem.fmt |= HDF_IMAGE; //|HDF_BITMAP;
hditem.iImage = 1;
hditem.hbm = (HBITMAP)m_bitmap;
pFlatHeader->SetItem(1, &hditem);
hditem.mask = HDI_FORMAT|HDI_IMAGE; //|HDI_BITMAP;
pFlatHeader->GetItem(2, &hditem);
hditem.fmt |= HDF_IMAGE; //|HDF_BITMAP|HDF_BITMAP_ON_RIGHT;
hditem.iImage = 2;
hditem.hbm = (HBITMAP)m_bitmap;
pFlatHeader->SetItem(2, &hditem);
HDITEMEX hditemex;
hditemex.iMinWidth = 21;
hditemex.iMaxWidth = 200;
pFlatHeader->SetItemEx(1, &hditemex);
lcList.SetExtendedStyle(LVS_EX_HEADERDRAGDROP|LVS_EX_FULLROWSELECT);
}
/////////////////////////////////////////////////////////////////////////////
// CFlatHeaderDemoView diagnostics
#ifdef _DEBUG
void CFlatHeaderDemoView::AssertValid() const
{
CListView::AssertValid();
}
void CFlatHeaderDemoView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}
CFlatHeaderDemoDoc* CFlatHeaderDemoView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFlatHeaderDemoDoc)));
return (CFlatHeaderDemoDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CFlatHeaderDemoView message handlers
void CFlatHeaderDemoView::OnViewDialogdemo()
{
CDialogDemo dlg;
dlg.DoModal();
}