📄 barpieview.cpp
字号:
// BarPieView.cpp : implementation file
//
#include "stdafx.h"
#include "GrDemo.h"
#include "GrDemoDoc.h"
#include "BarPieView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBarPieView
IMPLEMENT_DYNCREATE(CBarPieView, CView)
CBarPieView::CBarPieView()
{
m_pGraph = &m_BarLine;
m_bMemDraw = true;
m_bTitle = true;
m_bLegend = true;
m_bBoundary = false;
m_bGrid = true;
m_bVertical = true;
m_Types = LINE;
}
CBarPieView::~CBarPieView()
{
}
BEGIN_MESSAGE_MAP(CBarPieView, CView)
//{{AFX_MSG_MAP(CBarPieView)
ON_WM_ERASEBKGND()
ON_WM_SIZE()
ON_COMMAND(ID_TYPE_GRID, OnTypeGrid)
ON_UPDATE_COMMAND_UI(ID_TYPE_GRID, OnUpdateTypeGrid)
ON_COMMAND(ID_TYPE_BOUNDARY, OnTypeBoundary)
ON_UPDATE_COMMAND_UI(ID_TYPE_BOUNDARY, OnUpdateTypeBoundary)
ON_COMMAND(ID_TYPE_LEGEND, OnTypeLegend)
ON_UPDATE_COMMAND_UI(ID_TYPE_LEGEND, OnUpdateTypeLegend)
ON_COMMAND(ID_TYPE_BACKCOLOR, OnTypeBackcolor)
ON_UPDATE_COMMAND_UI(ID_TYPE_BACKCOLOR, OnUpdateTypeBackcolor)
ON_COMMAND(ID_TYPE_TITLE, OnTypeTitle)
ON_UPDATE_COMMAND_UI(ID_TYPE_TITLE, OnUpdateTypeTitle)
ON_COMMAND(ID_TYPE_MEMORYDRAW, OnTypeMemorydraw)
ON_UPDATE_COMMAND_UI(ID_TYPE_MEMORYDRAW, OnUpdateTypeMemorydraw)
ON_COMMAND(ID_TYPES_LINE, OnTypesLine)
ON_UPDATE_COMMAND_UI(ID_TYPES_LINE, OnUpdateTypesLine)
ON_COMMAND(ID_TYPES_BAR, OnTypesBar)
ON_UPDATE_COMMAND_UI(ID_TYPES_BAR, OnUpdateTypesBar)
ON_COMMAND(ID_TYPES_BAR3D, OnTypesBar3d)
ON_UPDATE_COMMAND_UI(ID_TYPES_BAR3D, OnUpdateTypesBar3d)
ON_COMMAND(ID_TYPES_GANTTBAR, OnTypesGanttbar)
ON_UPDATE_COMMAND_UI(ID_TYPES_GANTTBAR, OnUpdateTypesGanttbar)
ON_COMMAND(ID_TYPES_PIE, OnTypesPie)
ON_UPDATE_COMMAND_UI(ID_TYPES_PIE, OnUpdateTypesPie)
ON_COMMAND(ID_TYPES_CUTPIE, OnTypesCutpie)
ON_UPDATE_COMMAND_UI(ID_TYPES_CUTPIE, OnUpdateTypesCutpie)
ON_COMMAND(ID_DIRECTION_VERTICAL, OnDirectionVertical)
ON_UPDATE_COMMAND_UI(ID_DIRECTION_VERTICAL, OnUpdateDirectionVertical)
ON_COMMAND(ID_DIRECTION_HORIZONTAL, OnDirectionHorizontal)
ON_UPDATE_COMMAND_UI(ID_DIRECTION_HORIZONTAL, OnUpdateDirectionHorizontal)
//}}AFX_MSG_MAP
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()
void CBarPieView::DrawFrame(CRect& rect, COLORREF cr, const char* Title)
{
m_pGraph->RecalcRects(rect);
if (m_bBoundary)
m_pGraph->DrawBoundary(cr, 2);
if (m_bTitle)
m_pGraph->Title(Title);
}
/////////////////////////////////////////////////////////////////////////////
// CBarPieView drawing
void CBarPieView::OnDraw(CDC* pDC)
{
CGrDemoDoc* pDoc = GetDocument();
CRect rect;
if (pDC->IsPrinting())
{
rect.left = rect.top = 0;
rect.right = pDC->GetDeviceCaps(HORZRES);
rect.bottom = pDC->GetDeviceCaps(VERTRES);
m_pGraph->SetPrintScale(pDC->m_hDC, rect);
}
else
GetClientRect(rect);
m_pGraph->BeginDraw(pDC->m_hDC);
switch(m_Types)
{
case LINE:
DrawFrame(rect, RGB(255, 0, 255), "Line");
m_pGraph->Line(m_bGrid, PS_SOLID, 3);
break;
case BAR:
DrawFrame(rect, RGB(255, 0, 255), "Bar");
m_pGraph->Bar(m_bGrid, m_bVertical);
break;
case BAR3D:
DrawFrame(rect, RGB(255, 0, 255), "Bar 3D");
m_pGraph->Bar3D(m_bGrid, m_bVertical);
break;
case GANTTBAR:
DrawFrame(rect, RGB(255, 0, 255), "Gantt Bar");
m_pGraph->GanttBar(m_bGrid, m_bVertical);
break;
case PIE:
DrawFrame(rect, RGB(255, 0, 255), "Pie");
m_Pie.CutPie(pDoc->x, 5, pDoc->colstr, false);
break;
case CUTPIE:
DrawFrame(rect, RGB(255, 0, 255), "Cut Pie");
m_Pie.CutPie(pDoc->x, 5, pDoc->colstr);
break;
}
m_pGraph->EndDraw(pDC->m_hDC);
}
/////////////////////////////////////////////////////////////////////////////
// CBarPieView printing
BOOL CBarPieView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CBarPieView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CBarPieView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CBarPieView diagnostics
#ifdef _DEBUG
void CBarPieView::AssertValid() const
{
CView::AssertValid();
}
void CBarPieView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CGrDemoDoc* CBarPieView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGrDemoDoc)));
return (CGrDemoDoc*)m_pDocument;
}
#endif //_DEBUG
void CBarPieView::Redraw()
{
RECT rect;
GetClientRect(&rect);
m_pGraph->RecalcRects(rect);
Invalidate();
}
/////////////////////////////////////////////////////////////////////////////
// CBarPieView message handlers
BOOL CBarPieView::OnEraseBkgnd(CDC* pDC)
{
if (!m_pGraph->m_bMemoryDraw)
return CView::OnEraseBkgnd(pDC) ;
return TRUE;
}
void CBarPieView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
RECT rect;
GetClientRect(&rect);
m_pGraph->RecalcRects(rect);
}
void CBarPieView::OnTypeGrid()
{
m_bGrid = !m_bGrid;
Redraw();
}
void CBarPieView::OnUpdateTypeGrid(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_bGrid);
pCmdUI->Enable(m_Types < PIE);
}
void CBarPieView::OnTypeBoundary()
{
m_bBoundary = !m_bBoundary;
Redraw();
}
void CBarPieView::OnUpdateTypeBoundary(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_bBoundary);
}
void CBarPieView::OnTypeLegend()
{
m_bLegend = !m_bLegend;
m_pGraph->EnableLegend(m_bLegend);
Redraw();
}
void CBarPieView::OnUpdateTypeLegend(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_bLegend);
}
void CBarPieView::OnTypeBackcolor()
{
// CColorDialog bug under the debug version
CColorDialog cDlg(m_nBkColor, CC_FULLOPEN | CC_ANYCOLOR, this);
if (cDlg.DoModal() == IDOK)
{
m_nBkColor = cDlg.GetColor();
m_pGraph->SetBackColor(m_nBkColor);
Redraw();
}
}
void CBarPieView::OnUpdateTypeBackcolor(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
}
void CBarPieView::OnTypeTitle()
{
m_bTitle = !m_bTitle;
Redraw();
}
void CBarPieView::OnUpdateTypeTitle(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_bTitle);
}
void CBarPieView::OnTypeMemorydraw()
{
m_bMemDraw = !m_bMemDraw;
m_pGraph->EnableMemoryDraw(m_bMemDraw);
Redraw();
}
void CBarPieView::OnUpdateTypeMemorydraw(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_bMemDraw);
}
void CBarPieView::OnTypesLine()
{
m_Types = LINE;
m_pGraph = &m_BarLine;
Redraw();
}
void CBarPieView::OnUpdateTypesLine(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_Types == LINE);
}
void CBarPieView::OnTypesBar()
{
m_Types = BAR;
m_pGraph = &m_BarLine;
Redraw();
}
void CBarPieView::OnUpdateTypesBar(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_Types == BAR);
}
void CBarPieView::OnTypesBar3d()
{
m_Types = BAR3D;
m_pGraph = &m_BarLine;
Redraw();
}
void CBarPieView::OnUpdateTypesBar3d(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_Types == BAR3D);
}
void CBarPieView::OnTypesGanttbar()
{
m_Types = GANTTBAR;
m_pGraph = &m_BarLine;
Redraw();
}
void CBarPieView::OnUpdateTypesGanttbar(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_Types == GANTTBAR);
}
void CBarPieView::OnTypesPie()
{
m_Types = PIE;
m_pGraph = &m_Pie;
Redraw();
}
void CBarPieView::OnUpdateTypesPie(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_Types == PIE);
}
void CBarPieView::OnTypesCutpie()
{
m_Types = CUTPIE;
m_pGraph = &m_Pie;
Redraw();
}
void CBarPieView::OnUpdateTypesCutpie(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_Types == CUTPIE);
}
void CBarPieView::OnDirectionVertical()
{
m_bVertical = true;
Redraw();
}
void CBarPieView::OnUpdateDirectionVertical(CCmdUI* pCmdUI)
{
pCmdUI->Enable(!m_bVertical && m_Types > LINE && m_Types < PIE);
}
void CBarPieView::OnDirectionHorizontal()
{
m_bVertical = false;
Redraw();
}
void CBarPieView::OnUpdateDirectionHorizontal(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_bVertical && m_Types > LINE && m_Types < PIE);
}
void CBarPieView::OnInitialUpdate()
{
CView::OnInitialUpdate();
CGrDemoDoc* pDoc = GetDocument();
m_nBkColor = m_pGraph->GetBackColor();
m_pGraph->EnableMemoryDraw(m_bMemDraw);
m_pGraph->EnableLegend(m_bLegend);
m_pGraph->SetBackColor(m_nBkColor);
m_pGraph->SetData(pDoc->RawData, 3, 5, pDoc->rowstr, pDoc->colstr);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -