|
// GridViewDemoView.cpp : implementation of the CGridViewDemoView class
//
#include "stdafx.h"
#include "GridViewDemo.h"
#include "GridViewDemoDoc.h"
#include "GridViewDemoView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGridViewDemoView
IMPLEMENT_DYNCREATE(CGridViewDemoView, CView)
BEGIN_MESSAGE_MAP(CGridViewDemoView, CView)
//{{AFX_MSG_MAP(CGridViewDemoView)
ON_WM_SIZE()
ON_COMMAND(ID_TOGGLE_READONLY, OnToggleReadonly)
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGridViewDemoView construction/destruction
CGridViewDemoView::CGridViewDemoView()
{
m_pGridCtrl = NULL;
}
CGridViewDemoView::~CGridViewDemoView()
{
if (m_pGridCtrl)
delete m_pGridCtrl;
}
BOOL CGridViewDemoView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CGridViewDemoView drawing
void CGridViewDemoView::OnDraw(CDC* pDC)
{
CGridViewDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CGridViewDemoView printing
BOOL CGridViewDemoView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CGridViewDemoView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
if (m_pGridCtrl)
m_pGridCtrl->OnBeginPrinting(pDC, pInfo);
}
void CGridViewDemoView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
if (m_pGridCtrl)
m_pGridCtrl->OnPrint(pDC, pInfo);
}
void CGridViewDemoView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
if (m_pGridCtrl)
m_pGridCtrl->OnEndPrinting(pDC, pInfo);
}
/////////////////////////////////////////////////////////////////////////////
// CGridViewDemoView diagnostics
#ifdef _DEBUG
void CGridViewDemoView::AssertValid() const
{
CView::AssertValid();
}
void CGridViewDemoView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CGridViewDemoDoc* CGridViewDemoView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGridViewDemoDoc)));
return (CGridViewDemoDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CGridViewDemoView message handlers
void CGridViewDemoView::OnInitialUpdate()
{
CView::OnInitialUpdate();
if (m_pGridCtrl == NULL)
{
// Create the Gridctrl object
m_pGridCtrl = new CGridCtrl;
if (!m_pGridCtrl) return;
// Create the Gridctrl window
CRect rect;
GetClientRect(rect);
m_pGridCtrl->Create(rect, this, 100);
// fill it up with stuff
m_pGridCtrl->SetEditable(TRUE);
m_pGridCtrl->EnableDragAndDrop(TRUE);
try {
m_pGridCtrl->SetRowCount(50);
m_pGridCtrl->SetColumnCount(10);
m_pGridCtrl->SetFixedRowCount(1);
m_pGridCtrl->SetFixedColumnCount(1);
}
catch (CMemoryException* e)
{
e->ReportError();
e->Delete();
return;
}
// fill rows/cols with text
for (int row = 0; row < m_pGridCtrl->GetRowCount(); row++)
for (int col = 0; col < m_pGridCtrl->GetColumnCount(); col++)
{
GV_ITEM Item;
Item.mask = GVIF_TEXT|GVIF_FORMAT;
Item.row = row;
Item.col = col;
if (row < 1) {
Item.nFormat = DT_LEFT|DT_WORDBREAK;
Item.strText.Format(_T("Column %d"),col);
} else if (col < 1) {
Item.nFormat = DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX;
Item.strText.Format(_T("Row %d"),row);
} else {
Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX;
Item.strText.Format(_T("%d"),row*col);
}
m_pGridCtrl->SetItem(&Item);
}
m_pGridCtrl->AutoSize();
}
}
void CGridViewDemoView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
if (m_pGridCtrl->GetSafeHwnd())
{
CRect rect;
GetClientRect(rect);
m_pGridCtrl->MoveWindow(rect);
}
}
BOOL CGridViewDemoView::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
if (m_pGridCtrl && IsWindow(m_pGridCtrl->m_hWnd))
if (m_pGridCtrl->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
return TRUE;
return CView::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
void CGridViewDemoView::OnToggleReadonly()
{
if (m_pGridCtrl && IsWindow(m_pGridCtrl->m_hWnd))
{
CCellID cell = m_pGridCtrl->GetFocusCell();
if (m_pGridCtrl->IsValid(cell))
{
int nState = m_pGridCtrl->GetItemState(cell.row, cell.col);
if (m_pGridCtrl->IsCellEditable(cell))
m_pGridCtrl->SetItemState(cell.row, cell.col, nState | GVIS_READONLY);
else
m_pGridCtrl->SetItemState(cell.row, cell.col, nState & ~GVIS_READONLY);
}
}
}
BOOL CGridViewDemoView::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
//return CView::OnEraseBkgnd(pDC);
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.