2024-06-23 17:36:53 +08:00

2692 lines
88 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// GraphicView.cpp : implementation of the CGraphicView class
//
#include "stdafx.h"
#include "Graphic.h"
//#include "Pegrpapi.h"
#include "GraphicDoc.h"
#include "GraphicView.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "CoolControlsManager.h"
#define GetRandom(min,max) ((rand()%(int)(((max)+1)-(min)))+(min))
/////////////////////////////////////////////////////////////////////////////
// CGraphicView
IMPLEMENT_DYNCREATE(CGraphicView, CView)
BEGIN_MESSAGE_MAP(CGraphicView, CView)
//{{AFX_MSG_MAP(CGraphicView)
ON_COMMAND(ID_DRAW_BAR, OnDrawBar)
ON_WM_ERASEBKGND()
ON_COMMAND(ID_DRAW_LINE, OnDrawLine)
ON_COMMAND(ID_DRAW_PIE, OnDrawPie)
ON_COMMAND(ID_DRAW_SCATTER, OnDrawScatter)
ON_COMMAND(ID_DRAW_WHISKER, OnDrawWhisker)
ON_COMMAND(ID_DRAW_STACKED_BAR, OnDrawStackedBar)
ON_COMMAND(ID_DRAW_XY_LINE, OnDrawXyLine)
ON_WM_TIMER()
ON_COMMAND(ID_DRAW_3D_BAR, OnDraw3dBar)
ON_COMMAND(ID_DRAW_3D_STACKED_BAR, OnDraw3dStackedBar)
ON_COMMAND(ID_DRAW_3D_LINE, OnDraw3dLine)
ON_COMMAND(ID_DRAW_3D_PIE, OnDraw3dPie)
ON_COMMAND(ID_BK_LINE, OnBkLine)
ON_COMMAND(ID_BK_XY, OnBkXy)
ON_COMMAND(ID_BK_AREA, OnBkArea)
ON_COMMAND(ID_BK_BAR, OnBkBar)
ON_COMMAND(ID_BK_BAR_GROUP, OnBkBarGroup)
ON_COMMAND(ID_BK_PIE, OnBkPie)
ON_COMMAND(ID_BUTTON32781, OnButton32781)
ON_WM_SIZE()
ON_COMMAND(ID_DRAW_NEW, OnDrawNew)
ON_COMMAND(ID_DRAW_SILE, OnDrawSile)
ON_COMMAND(ID_REAL, OnReal)
ON_COMMAND(ID_DRAWGRAPH, OnDrawgraph)
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CGraphicView construction/destruction
CGraphicView::CGraphicView()
{
// TODO: add construction code here
m_nRealTimeCounter = 0;
m_nSinCounter = 0;
}
CGraphicView::~CGraphicView()
{
}
BOOL CGraphicView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CGraphicView drawing
void CGraphicView::OnDraw(CDC* pDC)
{
CGraphicDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CGraphicView printing
BOOL CGraphicView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CGraphicView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CGraphicView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CGraphicView diagnostics
#ifdef _DEBUG
void CGraphicView::AssertValid() const
{
CView::AssertValid();
}
void CGraphicView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CGraphicDoc* CGraphicView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGraphicDoc)));
return (CGraphicDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CGraphicView message handlers
void CGraphicView::OnInitialUpdate()
{
CView::OnInitialUpdate();
AfxGetApp()->GetMainWnd()->SetWindowText(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> V1.0"));
GetCtrlManager().InstallHook();//ʹ<><CAB9><EFBFBD>пؼ<D0BF><D8BC><EFBFBD><EFBFBD><EFBFBD>
// OnDraw3dStackedBar();
// TODO: Add your specialized code here and/or call the base class
}
void CGraphicView::OnDrawBar()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
if(m_hPE)
m_hPE=NULL;
//! Right button click to show popup menu. //
//! Double Click to show customization dialog. //
// This example builds upon the basic CreateSimpleGraph '000' example chart //
CreateSimpleGraph();
// Below tells object to automatically generate statistical
// comparison subsets, object will actually have
// 6 subsets when finished initializing.
// int nArray[2];
// nArray[0] = PEAS_AVGAP;
// nArray[1] = PEAS_AVGPP;
/// PEvset (m_hPE, PEP_naAUTOSTATSUBSETS, nArray, 2);
// Other various properties //
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_DARK_LINE);
// PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE_INSIDE_AXIS);
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);
// PEnset(m_hPE, PEP_bMARKDATAPOINTS, TRUE);
}
void CGraphicView::CreateSimpleGraph()
{
//! Right button click to show popup menu. //
//! Double Click to show customization dialog. //
//! Left-Click and drag to draw zoom box. Use popup memu or 'z' to undo zoom. //
// Simple example show the basics of a graph object. //
// Graph's generally only contain YData because we assume
// data is plotted equally spaced left to right.
m_canReal=FALSE;
CRect rect;
GetClientRect( rect );
// m_hPE = PEcreate(PECONTROL_GRAPH, WS_CHILD|WS_VISIBLE, &rect, m_hWnd, 1001);
// if (m_hPE)
// {
// // Prepare images in memory //
// // PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
//
// // Pass Data //
// // PEnset(m_hPE, PEP_nSUBSETS, 4);
// // PEnset(m_hPE, PEP_nPOINTS, 12);
//
// float fY;
// for (int s=0; s<=3; s++)
// {
// for (int p=0; p<=11; p++)
// {
// fY = float((p + 1) * 50) + GetRandom(2, 250);
// PEvsetcellEx(m_hPE, PEP_faYDATA, s, p, &fY);
// }
// }
// Set DataShadows to show 3D //
// / PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);
// PEnset(m_hPE, PEP_nBORDERTYPES, PETAB_DROP_SHADOW);
//
// PEszset(m_hPE, PEP_szMAINTITLE, "<22><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
// PEszset(m_hPE, PEP_szSUBTITLE, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>--<2D>ݸ<EFBFBD>");
// PEszset(m_hPE, PEP_szYAXISLABEL, "<22><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>");
// PEszset(m_hPE, PEP_szXAXISLABEL, "<22>·<EFBFBD>");
// PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);//<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
// PEnset(m_hPE, PEP_nGRIDLINECONTROL, PEGLC_NONE);//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>X,Y
// PEnset(m_hPE, PEP_bALLOWRIBBON, TRUE);
//// PEnset(m_hPE, PEP_nALLOWZOOMING, PEAZ_HORZANDVERT);
// PEnset(m_hPE, PEP_nZOOMSTYLE, PEZS_RO2_NOT);
//
// subset labels //
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 0, "<22><>ɳ" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 1, "<22>Ϻ<EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 2, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 3, "<22><><EFBFBD><EFBFBD>" );
//
// // point labels //
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 0, "һ<><D2BB>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 1, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 2, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 3, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 4, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 5, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 6, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 7, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 8, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 9, "ʮ<><CAAE>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 10, "ʮһ<CAAE><D2BB>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 11, "ʮ<><CAAE><EFBFBD><EFBFBD>" );
//
// // subset colors //
// DWORD dwArray[4] = { RGB(198,0,0), RGB( 0, 198, 198 ), RGB( 198,198,0 ), RGB( 0,198,0 ) };
// PEvsetEx(m_hPE, PEP_dwaSUBSETCOLORS, 0, 4, dwArray, 0);
//
// // subset line types //
// int nLineTypes[] = { PELT_MEDIUMSOLID, PELT_MEDIUMSOLID,
// PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, PELT_MEDIUMSOLID,
// PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, PELT_MEDIUMSOLID};
// PEvset(m_hPE, PEP_naSUBSETLINETYPES, nLineTypes, 8);
//
// // subset point types //
// int nPointTypes[] = { PEPT_DOTSOLID, PEPT_UPTRIANGLESOLID,
// PEPT_SQUARESOLID, PEPT_DOWNTRIANGLESOLID, PEPT_DOT,
// PEPT_UPTRIANGLE, PEPT_SQUARE, PEPT_DOWNTRIANGLE };
// PEvset(m_hPE, PEP_naSUBSETPOINTTYPES, nPointTypes, 8);
//
// // Allow stacked type graphs //
// PEnset(m_hPE, PEP_bNOSTACKEDDATA, FALSE);
//
// // Various other features //
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_LINE);
// PEnset(m_hPE, PEP_bSIMPLEPOINTLEGEND, TRUE);
// PEnset(m_hPE, PEP_bSIMPLELINELEGEND, TRUE);
// PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE);
// PEnset(m_hPE, PEP_nGRAPHPLUSTABLE, PEGPT_BOTH);
//
// PEnset(m_hPE, PEP_nGRADIENTBARS, 8);
// PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// PEnset(m_hPE, PEP_bLINESHADOWS, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
//
// }
}
BOOL CGraphicView::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
void CGraphicView::OnDrawLine()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
if(m_hPE)
m_hPE=NULL;
CreateSimpleGraph();
int nArray[2];
// nArray[0] = PEAS_AVGAP;
// nArray[1] = PEAS_AVGPP;
// PEvset (m_hPE, PEP_naAUTOSTATSUBSETS, nArray, 2);
// nArray[0] = 4; // fourth subset
// nArray[1] = 5; // fifth subset
// PEvset(m_hPE, PEP_naRANDOMSUBSETSTOGRAPH, nArray, 2);
// PEnset(m_hPE, PEP_nSCROLLINGSUBSETS, 1);
// PEnset(m_hPE, PEP_nTABLEWHAT, PETW_ALLSUBSETS);
// PEnset(m_hPE, PEP_nGRAPHPLUSTABLE, PEGPT_BOTH);
// PEnset(m_hPE, PEP_nDATAPRECISION, 0);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_NO_BORDER);
// PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE_INSIDE_AXIS);
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);
// PEnset(m_hPE, PEP_nBESTFITDEGREE, PEBFD_4TH);
// PEnset(m_hPE, PEP_bMARKDATAPOINTS, TRUE);
// PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE);
}
void CGraphicView::OnDrawPie()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
// This example builds upon the basic CreateSimpleGraph '000' example chart //
CreateSimpleGraph();
// Disable default scale //
//// PEnset(m_hPE, PEP_nSHOWYAXIS, PESA_EMPTY);
// // Generally, a custom y axis will need manual range control //
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLY, PEMSC_MINMAX);
//
// double manminY = 0.0F;
// PEvset(m_hPE, PEP_fMANUALMINY, &manminY, 1);
//
// double manmaxY = 1000.0F;
// PEvset(m_hPE, PEP_fMANUALMAXY, &manmaxY, 1);
//
// Create custom grid lines with HorzLineAnnotations //
// // Note that GridLineControl will control these annotations //
// double horzlineannot = 200.0F;
// PEvsetcell(m_hPE, PEP_faHORZLINEANNOTATION, 0, &horzlineannot);
// int horzlinetyp = PELAT_GRIDLINE;
// PEvsetcell(m_hPE, PEP_naHORZLINEANNOTATIONTYPE, 0, &horzlinetyp);
// PEvsetcell(m_hPE, PEP_szaHORZLINEANNOTATIONTEXT, 0, "|LLow Value");
//
// horzlineannot = 500.0F;
// PEvsetcell(m_hPE, PEP_faHORZLINEANNOTATION, 1, &horzlineannot);
// horzlinetyp = PELAT_GRIDLINE;
// PEvsetcell(m_hPE, PEP_naHORZLINEANNOTATIONTYPE, 1, &horzlinetyp);
// PEvsetcell(m_hPE, PEP_szaHORZLINEANNOTATIONTEXT, 1, "|LMedium Value");
//
// horzlineannot = 800.0F;
// PEvsetcell(m_hPE, PEP_faHORZLINEANNOTATION, 2, &horzlineannot);
// horzlinetyp = PELAT_GRIDLINE;
// PEvsetcell(m_hPE, PEP_naHORZLINEANNOTATIONTYPE, 2, &horzlinetyp);
// PEvsetcell(m_hPE, PEP_szaHORZLINEANNOTATIONTEXT, 2, "|LHigh Value");
//
// horzlineannot = 350.0F;
// PEvsetcell(m_hPE, PEP_faHORZLINEANNOTATION, 3, &horzlineannot);
// horzlinetyp = PELAT_GRIDTICK;
// PEvsetcell(m_hPE, PEP_naHORZLINEANNOTATIONTYPE, 3, &horzlinetyp);
// PEvsetcell(m_hPE, PEP_szaHORZLINEANNOTATIONTEXT, 3, "");
//
// horzlineannot = 650.0F;
// PEvsetcell(m_hPE, PEP_faHORZLINEANNOTATION, 4, &horzlineannot);
// horzlinetyp = PELAT_GRIDTICK;
// PEvsetcell(m_hPE, PEP_naHORZLINEANNOTATIONTYPE, 4, &horzlinetyp);
// PEvsetcell(m_hPE, PEP_szaHORZLINEANNOTATIONTEXT, 4, "");
//
// // Set LeftMargin to allocate space for line annotation text //
// // Use the longest string used in annotations.
// PEszset(m_hPE, PEP_szLEFTMARGIN, "Medium Value ");
//
// // Set this to see annotations //
// PEnset(m_hPE, PEP_bSHOWANNOTATIONS, TRUE);
//
// // Increase line annotation text size //
// PEnset(m_hPE, PEP_nLINEANNOTATIONTEXTSIZE, 100);
//
// // Put Grid In Front of Bars //
// PEnset(m_hPE, PEP_bGRIDINFRONT, TRUE);
//
// // Other various properties //
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_LIGHT_INSET);
}
void CGraphicView::OnDrawScatter()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
CreateSimpleGraph();
DWORD color;
for (int s=0;s<=3;s++) //4-1
{
for (int p=0;p<=11;p++)
{
switch(s)
{
case 0:
color = RGB(15 + ((p + 1) * 20), 0, 0);
// PEvsetcellEx(m_hPE, PEP_dwaPOINTCOLORS, s, p, &color);
break;
case 1:
color = RGB(0, 15 + ((p + 1) * 20), 0);
// PEvsetcellEx(m_hPE, PEP_dwaPOINTCOLORS, s, p, &color);
break;
case 2:
color = RGB(0, 0, 15 + ((p + 1) * 20));
///* */ PEvsetcellEx(m_hPE, PEP_dwaPOINTCOLORS, s, p, &color);
break;
case 3:
color = RGB(0, 15 + ((p + 1) * 20), 15 + ((p + 1) * 20));
// PEvsetcellEx(m_hPE, PEP_dwaPOINTCOLORS, s, p, &color);
break;
default:
break;
}
}
}
color = RGB(198, 0, 0);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 0, &color);
// color = RGB(0, 198, 0);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 1, &color);
// color = RGB(0, 0, 198);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 2, &color);
// color = RGB(0, 198, 198);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 3, &color);
// PEnset(m_hPE, PEP_nSCROLLINGSUBSETS, 1);
// PEnset(m_hPE, PEP_nTABLEWHAT, PETW_ALLSUBSETS);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
// PEnset(m_hPE, PEP_dwGRAPHBACKCOLOR, 1);
// PEnset(m_hPE, PEP_nGRAPHGRADIENTSTYLE, 0);
// PEnset(m_hPE, PEP_dwSHADOWCOLOR, RGB(0, 0, 0));
// PEnset(m_hPE, PEP_nGRAPHPLUSTABLE, PEGPT_BOTH);
// PEnset(m_hPE, PEP_nDATAPRECISION, 0);
// PEnset(m_hPE, PEP_nFORCEVERTICALPOINTS, PEFVP_SLANTED);
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);
// PEnset(m_hPE, PEP_nBORDERTYPES, PETAB_NO_BORDER);
}
void CGraphicView::OnDrawWhisker()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
//! Try this... Right Click chart and change the Plotting Method to Horizontal Bar Stacked. //
// This example builds upon the basic CreateSimpleGraph '000' example chart //
CreateSimpleGraph();
// // Enable Stacked type charts //
// PEnset(m_hPE, PEP_bNOSTACKEDDATA, FALSE);
//
// // Set plotting method //
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BARSTACKED);
//
// // Add a table //
// PEnset(m_hPE, PEP_nGRAPHPLUSTABLE, PEGPT_BOTH);
// PEnset(m_hPE, PEP_nDATAPRECISION, 2);
//
// PEnset(m_hPE, PEP_bALLOWHORZBARSTACKED, TRUE);
//
}
void CGraphicView::OnDrawStackedBar()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
//! Right button click to show popup menu. //
//! Double Click to show customization dialog. //
//! Left-Click and drag to draw zoom box. Use popup memu or 'z' to undo zoom. //
// This example builds upon the basic CreateSimpleGraph '000' example chart //
CreateSimpleGraph();
// // Now sub-divide subsets into 4 individual axes //
// // Each axis with one subset in each //
// int nArray[4] = {1,1,1,1};
// PEvset (m_hPE, PEP_naMULTIAXESSUBSETS, nArray, 4);
//
// // Set first axis parameters //
// PEnset(m_hPE, PEP_nWORKINGAXIS, 0);
// PEszset(m_hPE, PEP_szYAXISLABEL, "<22><><EFBFBD><EFBFBD>1");
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);
//
// // Set second axis parameters //
// PEnset(m_hPE, PEP_nWORKINGAXIS, 1);
// PEszset(m_hPE, PEP_szYAXISLABEL, "<22><><EFBFBD><EFBFBD>2");
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);
//
// // Set third axis parameters //
// PEnset(m_hPE, PEP_nWORKINGAXIS, 2);
// PEszset(m_hPE, PEP_szYAXISLABEL, "<22><><EFBFBD><EFBFBD>3");
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);
//
// // Set fourth axis parameters //
// PEnset(m_hPE, PEP_nWORKINGAXIS, 3);
// PEszset(m_hPE, PEP_szYAXISLABEL, "<22><><EFBFBD><EFBFBD>4");
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);
//
// // Reset WorkingAxis when done //
// PEnset(m_hPE, PEP_nWORKINGAXIS, 0);
//
// // Add Axis Separator //
// PEnset(m_hPE, PEP_nMULTIAXESSEPARATORS, PEMAS_THICKPLUSTICK);
//
// // Axis Sizing //
// PEnset(m_hPE, PEP_nMULTIAXESSIZING, TRUE);
//
// // Get rid of 3d stuff //
// PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_NONE);
//
// // Other various properties //
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_DARK_NO_BORDER);
// PEnset(m_hPE, PEP_bMARKDATAPOINTS, TRUE);
//
}
void CGraphicView::OnDrawXyLine()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
RECT rect;
GetClientRect( &rect );
m_canReal=TRUE;
m_Real=TRUE;
//
// char szSubsets[] = "<22><><EFBFBD><EFBFBD>\t<><74>ѹ\tƵ<74><C6B5>\t";
// PEvset (m_hPE, PEP_szaSUBSETLABELS, szSubsets, 3);
//
// // Set Various Other Properties ///
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_DARK_INSET);
//
// m_hPE = PEcreate(PECONTROL_GRAPH, WS_VISIBLE, &rect, m_hWnd, 1001);
// PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
// PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
// PEnset(m_hPE, PEP_nSUBSETS, 2); // set number of subsets
// PEnset(m_hPE, PEP_nPOINTS, 200); // number of data points
// PEnset(m_hPE, PEP_nPOINTSTOGRAPH, 20);
// PEnset(m_hPE, PEP_nPOINTSTOGRAPHINIT, PEPTGI_LASTPOINTS);
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_POINTSPLUSLINE);
// PEszset(m_hPE, PEP_szMAINTITLE, "ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>");
// PEszset(m_hPE, PEP_szSUBTITLE, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>-<2D>ݸ<EFBFBD>"); // no subtitle
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLY, PEMSC_MINMAX);
// double manminY = 1.0F;
// PEvset(m_hPE, PEP_fMANUALMINY, &manminY, 1);
// double manmaxY = 100.0F;
// PEvset(m_hPE, PEP_fMANUALMAXY, &manmaxY, 1);
// PEszset(m_hPE, PEP_szMANUALMAXPOINTLABEL, "000.000" );
// PEszset(m_hPE, PEP_szMANUALMAXDATASTRING, "00:00:00xx");
// PEnset(m_hPE, PEP_bNOSTACKEDDATA, TRUE);
// PEnset(m_hPE, PEP_bNORANDOMPOINTSTOGRAPH, TRUE);
// PEnset(m_hPE, PEP_bALLOWHISTOGRAM, FALSE);
// PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
// PEnset(m_hPE, PEP_nGRIDLINECONTROL, FALSE);
// PEnset(m_hPE, PEP_nDATAPRECISION, 1);
// PEszset(m_hPE, PEP_szaPOINTLABELS, "");
// float f1 = 0.0F;
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 0, &f1);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 1, &f1);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 2, &f1);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 3, &f1);
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, FALSE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_LIGHT_SHADOW);
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
// PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
}
void CGraphicView::OnTimer(UINT nIDEvent)
{
CString ttext;
double newx2;
float YData[250];
double XData[250];
double dx;
CTime t;
///// TM petm;
if(m_canReal)
{
if(nIDEvent==2)
{
if(m_Real)
{
float newy = 50.0F + float(sin((double) m_nSinCounter * 0.075F) * 30.0F) + GetRandom(1, 15);
float newy1,newy2;
newy1 = 50.0F - float(sin((double) m_nSinCounter * 0.075F) * 30.0F) + GetRandom(1, 15);
newy2 = 50.0F + float(sin((double) m_nSinCounter * 0.075F) * 30.0F) - GetRandom(1, 15);
// Determine newx2 as current date and time in VB format //
t = CTime::GetCurrentTime();
// / petm.nDay = t.GetDay();
// petm.nMonth = t.GetMonth();
// petm.nYear = t.GetYear() - 1900;
// petm.nHour = t.GetHour();
// petm.nMinute = t.GetMinute();
// petm.nSecond = t.GetSecond();
// PEcreateserialdate(&newx2, &petm, PEDTM_VB);
// Shift data when counter reaches end of data //
if(m_nRealTimeCounter >= 1999)
{
memset(YData, 0, 250 * sizeof(float));
memset(XData, 0, 250 * sizeof(double));
// Shift Data by 250 data points, oldest 250 will be lost.
m_nRealTimeCounter = m_nRealTimeCounter - 250;
// PEvset(m_hPE, PEP_faAPPENDYDATA, YData, 250);
// PEvset(m_hPE, PEP_faAPPENDXDATAII, XData, 250);
}
// Store new values at current index //
// PEvsetcellEx(m_hPE, PEP_faXDATAII, 0, m_nRealTimeCounter, &newx2);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, m_nRealTimeCounter, &newy);
//
// // Store new values at current index //
// PEvsetcellEx(m_hPE, PEP_faXDATAII, 1, m_nRealTimeCounter, &newx2);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, m_nRealTimeCounter, &newy1);
//
// // Store new values at current index //
// PEvsetcellEx(m_hPE, PEP_faXDATAII, 2, m_nRealTimeCounter, &newx2);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 2, m_nRealTimeCounter, &newy2);
// Increment index counter //
m_nRealTimeCounter += 1;
// SinCounter is only to produce sin wave data //
m_nSinCounter += 1;
if (m_nSinCounter > 30000)
m_nSinCounter = 1;
// If current time is beyond zoom max, the re-adjust zoom max //
if (newx2 > ZoomEnd)
{
ZoomEnd = ZoomEnd + ZoomSmallInterval;
ZoomStart = ZoomEnd - ZoomInterval;
// PEvset(m_hPE, PEP_fZOOMMINX, &ZoomStart, 1);
// PEvset(m_hPE, PEP_fZOOMMAXX, &ZoomEnd, 1);
//
// PEvgetcellEx(m_hPE, PEP_faXDATAII, 0, 1, &dx);
// PEvset(m_hPE, PEP_fMANUALMINX, &dx, 1);
// PEvset(m_hPE, PEP_fMANUALMAXX, &ZoomEnd, 1);
}
// // Update image and force paint //
// PEreinitialize( m_hPE );
// PEresetimage( m_hPE, 0, 0 );
::InvalidateRect(m_hPE, NULL, FALSE);
}
}
else
{
if(m_Real)
{
/*PEvset(m_hPE, PEP_szaAPPENDPOINTLABELDATA, NULL, 1);
// make some random data //
float r1,r2,fNew[2];
r1 = (float) GetRandom(1, 20);
r2 = (float) GetRandom(1, 100);
fNew[0] = r1 + (r2 * .0001F);
fNew[1] = fNew[0] * 4;
PEvset(m_hPE, PEP_faAPPENDYDATA, &fNew[0], 1);*/
///////////////////////////////////
float newy = 50.0F + float(sin((double) m_nSinCounter * 0.075F) * 30.0F) + GetRandom(1, 15);
float newx = (float)m_nRealTimeCounter;
// // Append new values //
// PEvset(m_hPE, PEP_faAPPENDYDATA, &newy, 1);
// PEvset(m_hPE, PEP_faAPPENDXDATA, &newx, 1);
// m_nRealTimeCounter = m_nRealTimeCounter + 1;
//
// // Switch to AutoScaling x axis after receiving 100 data points //
// if (m_nRealTimeCounter == 100)
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLX, PEMSC_NONE);
//
// SinCounter is only to produce sin wave data //
m_nSinCounter = m_nSinCounter + 1;
if (m_nSinCounter > 30000)
m_nSinCounter = 1;
// Update image and force paint //
// PEreinitialize( m_hPE );
// PEresetimage( m_hPE, 0, 0 );
::InvalidateRect(m_hPE, NULL, FALSE);
}
else
{
////**********************************************
float newy,newx;
newy = 50.0F + float(sin((double) m_nSinCounter * 0.075F) * 30.0F) + GetRandom(1, 15);
newx = float(m_nRealTimeCounter);
//
// // Update new data at current index //
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, m_nRealTimeCounter, &newy);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, m_nRealTimeCounter, &newx);
// newy = 50.0F - float(sin((double) m_nSinCounter * 0.075F) * 30.0F) + GetRandom(1, 15);
// newx = float(m_nRealTimeCounter);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, m_nRealTimeCounter, &newy);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 1, m_nRealTimeCounter, &newx);
// newy = 50.0F + float(sin((double) m_nSinCounter * 0.075F) * 12.0F) - GetRandom(1, 15);
// newx = float(m_nRealTimeCounter);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 2, m_nRealTimeCounter, &newy);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 2, m_nRealTimeCounter, &newx);
// double dx;
// dx = (double) newx;
// PEvsetcell(m_hPE, PEP_faVERTLINEANNOTATION, 0, &dx);
// PEvsetcell(m_hPE, PEP_faVERTLINEANNOTATION, 2, &dx);
// PEvsetcell(m_hPE, PEP_faVERTLINEANNOTATION, 3, &dx);
// int lt = PELT_MEDIUMSOLID;
// PEvsetcell(m_hPE, PEP_naVERTLINEANNOTATIONTYPE, 0, &lt);
// COLORREF col;
// col = RGB(0,0,198);
// PEvsetcell(m_hPE, PEP_dwaVERTLINEANNOTATIONCOLOR, 0, &col);
// col = RGB(0,198,0);
// PEvsetcell(m_hPE, PEP_dwaVERTLINEANNOTATIONCOLOR, 1, &col);
// col = RGB(255,198,0);
// PEvsetcell(m_hPE, PEP_dwaVERTLINEANNOTATIONCOLOR, 2, &col);
// // Increment counter //
m_nRealTimeCounter = m_nRealTimeCounter + 1;
// Reset counter at end of data //
if (m_nRealTimeCounter == 100)
m_nRealTimeCounter = 0;
// SinCounter is only to produce sin wave data //
m_nSinCounter = m_nSinCounter + 1;
if (m_nSinCounter > 30000)
m_nSinCounter = 1;
// // Update image and force paint //
// PEreinitialize( m_hPE );
// // PEresetimage( m_hPE, 0, 0 );
// // PEresetimage( m_hPE, 1, 0 );
// PEresetimage( m_hPE, 2, 0 );
::InvalidateRect(m_hPE, NULL, FALSE);
}
}
}
CView::OnTimer(nIDEvent);
}
void CGraphicView::OnDraw3dBar()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
//! This shows how to place extra text inside table and within an axis. //
//! Maximize to allow room for textual data which is drawn as fixed font size. //
// This example builds upon the basic CreateSimpleGraph '000' example chart //
CreateSimpleGraph();
// Create two y axes //
int nMAS[] = {2, 2};
// PEvset(m_hPE, PEP_naMULTIAXESSUBSETS, nMAS, 2);
//
// // Construct a simple table annotation //
// PEnset(m_hPE, PEP_nWORKINGTABLE, 0);
// PEnset(m_hPE, PEP_nTAROWS, 6);
// PEnset(m_hPE, PEP_nTACOLUMNS, 12); // 12 is same number as PEP_nPOINTS
// Pass the table text //
char szTmp[48];
float fp;
int r, c;
DWORD dwColor;
BOOL b = TRUE;
for (r=0; r<6; r++)
{
if (b)
dwColor = RGB(175,175,175);
else
dwColor = RGB(255,255,255);
b = !b;
for (c=0; c<12; c++)
{
fp = float(sin(0.03F * (double) c + 1.0F + r) * 500.0F) + (float) GetRandom(2, 50);
sprintf(szTmp, "%.3f ", fp);
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, r, c, szTmp);
// PEvsetcellEx(m_hPE, PEP_dwaTACOLOR, r, c, &dwColor);
}
}
// // Set Table Location //
// PEnset(m_hPE, PEP_nTALOCATION, PETAL_INSIDE_AXIS_1);
// PEnset(m_hPE, PEP_nTAAXISLOCATION, PETAAL_BOTTOM_TABLE_SPACED);
//
// // Other Table Related Properties ///
// PEnset(m_hPE, PEP_bSHOWTABLEANNOTATION, TRUE);
// PEnset(m_hPE, PEP_nTABORDER, PETAB_NO_BORDER);
// PEnset(m_hPE, PEP_dwTABACKCOLOR, 1);
// PEnset(m_hPE, PEP_dwTAFORECOLOR, 1);
//
// // Construct a second simple table annotation //
// PEnset(m_hPE, PEP_nWORKINGTABLE, 1);
// PEnset(m_hPE, PEP_nTAROWS, 6);
// PEnset(m_hPE, PEP_nTACOLUMNS, 12);
// Pass the table text //
b = TRUE;
for (r=0; r<6; r++)
{
if (b)
dwColor = RGB(175,175,175);
else
dwColor = RGB(255,255,255);
b = !b;
for (c=0; c<12; c++)
{
fp = float(sin(0.03F * (double) c + 1.0F + (2 * r)) * 500.0F) + (float) GetRandom(2, 50);
sprintf(szTmp, "%.3f ", fp);
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, r, c, szTmp);
// PEvsetcellEx(m_hPE, PEP_dwaTACOLOR, r, c, &dwColor);
}
}
// // Set Table Location //
// PEnset(m_hPE, PEP_nTALOCATION, PETAL_INSIDE_AXIS);
// PEnset(m_hPE, PEP_nTAAXISLOCATION, PETAAL_BOTTOM_TABLE_SPACED);
//
// // Other Table Related Properties ///
// PEnset(m_hPE, PEP_bSHOWTABLEANNOTATION, TRUE);
// PEnset(m_hPE, PEP_nTABORDER, PETAB_NO_BORDER);
// PEnset(m_hPE, PEP_dwTABACKCOLOR, 1);
// PEnset(m_hPE, PEP_dwTAFORECOLOR, 1);
//
// // Construct a third simple table annotation //
// PEnset(m_hPE, PEP_nWORKINGTABLE, 2);
// PEnset(m_hPE, PEP_nTAROWS, 2);
// PEnset(m_hPE, PEP_nTACOLUMNS, 13);
//
// Pass the table text //
for (r=0; r<2; r++)
{
for (c=1; c<13; c++)
{
fp = float(sin(0.03F * (double) c + 1.0F) * 500.0F) + (float) GetRandom(2, 50);
sprintf(szTmp, "%.3f ", fp);
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, r, c, szTmp);
}
}
// Set Table Location //
// PEnset(m_hPE, PEP_nTALOCATION, PETAL_INSIDE_TABLE);
// PEnset(m_hPE, PEP_nTAAXISLOCATION, PETAAL_TOP_TABLE_SPACED);
//
// // Other Table Related Properties ///
// PEnset(m_hPE, PEP_bSHOWTABLEANNOTATION, TRUE);
// PEnset(m_hPE, PEP_dwTABACKCOLOR, RGB(0,198,198));
// PEnset(m_hPE, PEP_bTAHEADERCOLUMN, TRUE);
//
// // Set Text for Header Column //
// strcpy(szTmp, "Table Annotation Line 1");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 0, szTmp);
// strcpy(szTmp, "Table Annotation Line 2");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 1, 0, szTmp);
//
// Done setting Table Annotations ///
// // Set Various Other Properties ///
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_DARK_SHADOW);
// PEnset(m_hPE, PEP_nDATAPRECISION, 0);
// PEnset(m_hPE, PEP_nGRAPHPLUSTABLE, PEGPT_BOTH);
// PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE_INSIDE_AXIS);
// PEnset(m_hPE, PEP_nGRIDLINECONTROL, PEGLC_YAXIS);
// PEnset(m_hPE, PEP_bMARKDATAPOINTS, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_SMALL);
// PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);
// PEnset(m_hPE, PEP_bSHOWLEGEND, FALSE);
//
// PEnset(m_hPE, PEP_nWORKINGAXIS, 0);
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);
// PEnset(m_hPE, PEP_nRYAXISCOMPARISONSUBSETS, 1);
// PEnset(m_hPE, PEP_dwRYAXISCOLOR, RGB(0, 198,198));
// PEszset(m_hPE, PEP_szYAXISLABEL, "");
// PEszset(m_hPE, PEP_szRYAXISLABEL, "");
//
// PEnset(m_hPE, PEP_nWORKINGAXIS, 1);
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);
// PEnset(m_hPE, PEP_nRYAXISCOMPARISONSUBSETS, 1);
// PEnset(m_hPE, PEP_dwRYAXISCOLOR, RGB(0, 198,0));
// PEszset(m_hPE, PEP_szYAXISLABEL, "");
// PEszset(m_hPE, PEP_szRYAXISLABEL, "");
//
// DWORD dwArray[4] = { RGB(138,0,0), RGB(0, 198, 198), RGB(138,138,0), RGB(0,198,0) };
// PEvsetEx(m_hPE, PEP_dwaSUBSETCOLORS, 0, 4, dwArray, 0);
//
// PEnset(m_hPE, PEP_nSHOWTABLEANNOTATIONSMENU, PEMC_SHOW);
}
void CGraphicView::OnDraw3dStackedBar()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
//! Chart fills 100 points and once 100 points have
//! been passed, old data is over-written as more
//! data is passed to chart.
m_canReal=TRUE;
m_Real=FALSE;
RECT rect;
GetClientRect( &rect );
// Construct Object //
//// m_hPE = PEcreate(PECONTROL_SGRAPH, WS_VISIBLE, &rect, m_hWnd, 1001);
//
// PEnset(m_hPE, PEP_nSUBSETS, 3);
// PEnset(m_hPE, PEP_nPOINTS, 100);
//
// // Set Manual Y scale //
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLY, PEMSC_MINMAX);
// double arg = 1.0F;//
// PEvset(m_hPE, PEP_fMANUALMINY, &arg, 1);
// arg = 100.0F;
// PEvset(m_hPE, PEP_fMANUALMAXY, &arg, 1);
//
// // Set Manual X scale //
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLX, PEMSC_MINMAX);
// arg = 1.0F;
// PEvset(m_hPE, PEP_fMANUALMINX, &arg, 1);
// arg = 100.0F;
// PEvset(m_hPE, PEP_fMANUALMAXX, &arg, 1);
//
// // Show Annotations //
// PEnset(m_hPE, PEP_bSHOWANNOTATIONS, TRUE);
//
// // Clear out default data //
// float val = 0;
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, 0, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, 1, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, 2, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, 3, &val);
//
// PEvsetcellEx(m_hPE, PEP_faXDATA, 1, 0, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 1, 1, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 1, 2, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 1, 3, &val);
//
// PEvsetcellEx(m_hPE, PEP_faXDATA, 2, 0, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 2, 1, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 2, 2, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 2, 3, &val);
//
// int nTmpStyle;
// nTmpStyle = PELT_THINSOLID;
// PEvsetcell(m_hPE, PEP_naSUBSETLINETYPES, 0, &nTmpStyle);
// PEvsetcell(m_hPE, PEP_naSUBSETLINETYPES, 1, &nTmpStyle);
// PEvsetcell(m_hPE, PEP_naSUBSETLINETYPES, 2, &nTmpStyle);
// // PEvset(m_hPE, PEP_naSUBSETLINETYPES, PELT_THINSOLID, 0);
//
// char szSubsets[] = "<22><><EFBFBD><EFBFBD>\t<><74>ѹ\tƵ<74><C6B5>\t";
// PEvset (m_hPE, PEP_szaSUBSETLABELS, szSubsets, 3);
//
//
//
// // Set Various Other Properties ///
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_DARK_LINE);
//
// PEszset(m_hPE, PEP_szMAINTITLE, "<22><>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>");
// PEszset(m_hPE, PEP_szSUBTITLE, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>--<2D>ݸ<EFBFBD>");
// PEnset(m_hPE, PEP_bNORANDOMPOINTSTOEXPORT, TRUE);
// PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
// PEnset(m_hPE, PEP_bALLOWBAR, FALSE);
// PEnset(m_hPE, PEP_bALLOWPOPUP, FALSE);
// PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
// PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
//
// DWORD col = RGB(0, 198, 198);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 0, &col);
//
// col = RGB(0,198,0);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 1, &col);
//
// col = RGB(255,0,0);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 2, &col);
//
// PEnset(m_hPE, PEP_nGRADIENTBARS, 8);
// PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// PEnset(m_hPE, PEP_bLINESHADOWS, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
//
// PEreinitialize(m_hPE);
// PEresetimage(m_hPE, 2, 0);
// ::InvalidateRect(m_hPE, NULL, FALSE);
//
// //Initialize Counters and Timer
// m_nRealTimeCounter = 1;
// m_nSinCounter = 1;
SetTimer( 1, 100, NULL );
}
void CGraphicView::OnDraw3dLine()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
m_canReal=FALSE;
RECT rect;
GetClientRect( &rect );
// Construct Object //
// m_hPE = PEcreate(PECONTROL_PGRAPH, WS_VISIBLE, &rect, m_hWnd, 1001);
//
// PEnset(m_hPE, PEP_nSUBSETS, 2);
// PEnset(m_hPE, PEP_nPOINTS, 360);
//
int p;
float f1, f2;
for (p=0; p<360; p++)
{
f1 = (float) p;
f2 = (float) 150 * (float)sin((double) p * 0.054F);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, p, &f1);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, p, &f2);
}
for (p=0; p<360; p++)
{
f1 = (float) p;
// f2 = (float) 150 * (float)sin(((double) p * 0.044F)) * 2;
// PEvsetcellEx(m_hPE, PEP_faXDATA, 1, p, &f1);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, p, &f2);
}
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_LINE);
// PEnset(m_hPE, PEP_nALLOWZOOMING, 1);
// PEszset(m_hPE, PEP_szMAINTITLE, "Polar Chart");
// PEszset(m_hPE, PEP_szSUBTITLE, ""); // no subtitle
// float ftmp = .9F;
// PEvset(m_hPE, PEP_fFONTSIZELEGENDCNTL, &ftmp, 1 );
// PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
// PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
// PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
//
// // Set line types
// int nTypes[] = { PELT_MEDIUMSOLID, PELT_MEDIUMSOLID };
// PEvset(m_hPE, PEP_naSUBSETLINETYPES, nTypes, 2);
//
// // Set point types
// int nPTypes[] = { PEPT_DOTSOLID, PEPT_PLUS };
// PEvset(m_hPE, PEP_naSUBSETPOINTTYPES, nTypes, 2);
//
// // subset colors
// DWORD dwArray[2] = { RGB(198,0,0), RGB(0, 198, 0) };
// PEvset( m_hPE, PEP_dwaSUBSETCOLORS, dwArray, 2);
//
// // subset labels
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 0, "Signal #1" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 1, "Signal #2" );
//
// double dnull = -99999.0F;
// PEvset(m_hPE, PEP_fNULLDATAVALUEX, &dnull, 1);
// PEvset(m_hPE, PEP_fNULLDATAVALUE, &dnull, 1);
//
// // Set Various other features //
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_NO_BORDER);
// PEnset(m_hPE, PEP_bSIMPLEPOINTLEGEND, TRUE);
// PEnset(m_hPE, PEP_bSIMPLELINELEGEND, TRUE);
// PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE);
// PEnset(m_hPE, PEP_nZOOMSTYLE, PEZS_RO2_NOT);
// PEnset(m_hPE, PEP_nPOINTSIZE, PEPS_SMALL);
//
// PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// PEnset(m_hPE, PEP_bLINESHADOWS, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
// PEnset(m_hPE, PEP_nGRADIENTBARS, 8);
// PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);
// float f = 1.2F;
// PEvset(m_hPE, PEP_fFONTSIZEGNCNTL, &f, 1);
// // Enable Smith Mode //
// PEnset(m_hPE, PEP_nSMITHCHART, PESC_SMITH);
// PEszset(m_hPE, PEP_szMAINTITLE, "Smith Chart");
//
// // Change the data to something more appropriate //
// PEnset(m_hPE, PEP_nSUBSETS, 2);
// PEnset(m_hPE, PEP_nPOINTS, 40);
//
// // Set first subset's data //
// int s = 0;
// for (p=0; p<=39; p++)
// {
// f = (float) p * 0.1F;
// PEvsetcellEx(m_hPE, PEP_faXDATA, s, p, &f);
// f = (float) sin((double) p * 0.54F) * 0.2F;
// PEvsetcellEx(m_hPE, PEP_faYDATA, s, p, &f);
// }
//
// // Set second subset's data //
// s = 1;
// for (p=0; p<=39; p++)
// {
// f = (float) p * 0.5F;
// PEvsetcellEx(m_hPE, PEP_faXDATA, s, p, &f);
// f = (float) sin((double) p * 0.44F) * 0.5F;
// PEvsetcellEx(m_hPE, PEP_faYDATA, s, p, &f);
// }
//
// // Set Various other features //
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_DARK_SHADOW);
//
// // Add Some Padding on Right and Bottom //
// PEnset(m_hPE, PEP_nIMAGEADJUSTLEFT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTRIGHT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTBOTTOM, 400);
}
void CGraphicView::OnDraw3dPie()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
RECT rect;
GetClientRect( &rect );
m_canReal=FALSE;
// m_hPE = PEcreate(PECONTROL_PIE, WS_VISIBLE, &rect, m_hWnd, 1001);
// PEnset(m_hPE, PEP_nSUBSETS, 5);
// PEnset(m_hPE, PEP_nPOINTS, 12);
// int s,p;
// for (s=0; s<5; s++)
// {
// for (p=0; p<12; p++)
// {
// float f1 = (float) GetRandom(1, 5) + ((float) GetRandom(1, 150) / 100.0F);
// PEvsetcellEx(m_hPE, PEP_faXDATA, s, p, &f1);
// }
// }
// float f1= 0.0F;
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, 3, &f1);
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 0, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 1, "<22>Ϻ<EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 2, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 3, "<22><>ɳ" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 4, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 0, "һ<><D2BB>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 1, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 2, "<22><><EFBFBD><EFBFBD>");
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 3, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 4, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 5, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 6, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 7, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 8, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 9, "ʮ<><CAAE>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 10, "ʮһ<CAAE><D2BB>" );
// PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 11, "ʮ<><CAAE><EFBFBD><EFBFBD>" );
// DWORD c[12];
// c[0] = RGB(198, 0, 0);
// c[1] = RGB(0, 198, 0);
// c[2] = RGB(198, 198, 0);
// c[3] = RGB(0, 0, 198);
// c[4] = RGB(198, 0, 198);
// c[5] = RGB(0, 198, 198);
// c[6] = RGB(192, 192, 192);
// c[7] = RGB(148, 0, 0);
// c[8] = RGB(0, 148, 0);
// c[9] = RGB(148, 148, 0);
// c[10] = RGB(0, 148, 148);
// c[11] = RGB(122, 122, 122);
// PEvset(m_hPE, PEP_dwaSUBSETCOLORS, c, 12);
// PEszset(m_hPE, PEP_szMAINTITLE, "3D PIEͼ<45><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>");
// PEszset(m_hPE, PEP_szSUBTITLE, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>-<2D>ݸ<EFBFBD>"); // no subtitle
// PEnset(m_hPE, PEP_nDATAPRECISION, 1);
// PEnset(m_hPE, PEP_nGROUPINGPERCENT, 4);
// PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_3D);
// PEnset(m_hPE, PEP_bDISABLE3DSHADOW, FALSE);
// PEnset(m_hPE, PEP_nAUTOEXPLODE, PEAE_ALLSUBSETS);
// PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
// PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
// PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_NO_BORDER);
// PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
}
void CGraphicView::OnBkLine()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
OnDraw3dPie();
float f1 = 1;
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 3, &f1);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 5, &f1);
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, FALSE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_SHADOW);
// PEnset(m_hPE, PEP_nIMAGEADJUSTLEFT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTRIGHT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTBOTTOM, 400);
// //***********************************************
// OnDraw3dPie();
// f1 = 1;
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 3, &f1);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 5, &f1);
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, FALSE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_SHADOW);
// PEnset(m_hPE, PEP_nIMAGEADJUSTLEFT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTRIGHT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTBOTTOM, 400);
}
void CGraphicView::OnBkXy()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
RECT rect;
GetClientRect( &rect );
//
// // Construct Object //
// m_hPE = PEcreate(PECONTROL_PGRAPH, WS_VISIBLE, &rect, m_hWnd, 100);
//
// // Set to rose mode //
// PEnset(m_hPE, PEP_nSMITHCHART, PESC_ROSE); // Select Rose Plot Mode
//
// // Set titles //
// PEszset(m_hPE, PEP_szMAINTITLE, "Wind Rose Example");
// PEszset(m_hPE, PEP_szSUBTITLE, " ");
//
// // Set data //
// PEnset(m_hPE, PEP_nSUBSETS, 13);
// PEnset(m_hPE, PEP_nPOINTS, 16);
//
// float tempxdata[] =
// {
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F,
// 90.0F, 67.5F, 45.0F, 22.5F, 0.0F, 337.5F, 315.0F, 292.5F, 270.0F, 247.5F, 225.0F, 202.5F, 180.0F, 157.5F, 135.0F, 112.5F };
// PEvset(m_hPE, PEP_faXDATA, tempxdata, 208);
//
// float tempydata[] =
// { .77F, .75F, .78F, .88F, 1.07F, .98F, .69F, .51F, .38F, .50F, .56F, .65F, .72F, .70F, .62F, .63F,
// 1.04F, 1.72F, 2.68F, 4.76F, 4.58F, 2.59F, 1.29F, .99F, 1.19F, 1.77F, 2.34F, 2.89F, 2.05F, 1.31F, 1.16F, 1.08F,
// .43F, 1.05F, 3.41F, 7.40F, 5.97F, 1.48F, .30F, .39F, .73F, 1.68F, 3.53F, 2.73F, 1.24F, .55F, .25F, .27F,
// .20F, 1.07F, 3.71F, 4.49F, 2.08F, .23F, .10F, .11F, .29F, 1.16F, 2.32F, 1.26F, .54F, .18F, .09F, .22F,
// .05F, .48F, .66F, 1.31F, .26F, .01F, .02F, .04F, .14F, .33F, .75F, .46F, .18F, .05F, .07F, .03F,
// .04F, .10F, .07F, .02F, .02F, .02F, .01F, .01F, .01F, .05F, .12F, .09F, .04F, .02F, .03F, .04F,
// .01F, 0.0F, .01F, .01F, 0.0F, .01F, .01F, .01F, .01F, .01F, .01F, .03F, 0.0F, 0.0F, .02F, .01F,
// .01F, 0.0F, .01F, 0.0F, .01F, 0.0F, .01F, 0.0F, 0.0F, .01F, 0.0F, .01F, .02F, .01F, .01F, 0.0F,
// .01F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, .01F, 0.0F, 0.0F, 0.0F, 0.1F, 0.0F, 0.0F, 0.0F, 0.0F,
// 0.0F, 0.0F, .01F, 0.0F, 0.0F, 0.0F, 0.0F, .01F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F,
// 0.0F, 0.0F, .01F, 0.0F, 0.0F, 0.0F, 0.0F, .01F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F,
// 0.0F, 0.0F, .01F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F,
// 0.0F, 0.0F, .01F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F,0.0F, 0.0F, 0.0F, 0.0F, 0.0F };
// PEvset(m_hPE, PEP_faYDATA, tempydata, 208);
//
// char tempptlabels[] = "E\tENE\tNE\tNNE\tN\tNNW\tNW\tWNW\tW\tWSW\tSW\tSSW\tS\tSSE\tSE\tESE\t";
// char tempsslabels[] = "3.75\t6.25\t8.75\t11.25\t13.75\t16.25\t18.75\t21.25\t23.75\t26.25\t28.75\t31.25\t33.75\t";
// PEvset(m_hPE, PEP_szaPOINTLABELS, tempptlabels, 16);
// PEvset(m_hPE, PEP_szaSUBSETLABELS, tempsslabels, 13);
//
// // Manually control degree line frequency //
// PEnset(m_hPE, PEP_bMANUALXAXISTICKNLINE, TRUE);
// double d = 22.5F;
// PEvset(m_hPE, PEP_fMANUALXAXISLINE, &d, 1);
// PEvset(m_hPE, PEP_fMANUALXAXISTICK, &d, 1);
//
// // Make it so monochrome image is just black and white //
// DWORD bwc[2];
// bwc[0] = 0L;
// bwc[1] = RGB(255,255,255);
// PEvset(m_hPE, PEP_dwaSUBSETSHADES, bwc, 2);
//
// // Remove standard legend, rose has a special legend //
// int stl = -1;
// PEvset(m_hPE, PEP_naSUBSETSTOLEGEND, &stl, 1);
//
// // Set inner circle label //
// PEszset(m_hPE, PEP_szMANUALMAXDATASTRING, "1.25|1.1%");
//
// // Get rid of radius labels //
// PEnset(m_hPE, PEP_bGRIDINFRONT, FALSE);
//
// // Enable zooming //
// PEnset(m_hPE, PEP_nALLOWZOOMING, PEAZ_HORZANDVERT);
// PEnset(m_hPE, PEP_nZOOMSTYLE, PEZS_RO2_NOT);
//
// PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
// PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, FALSE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_NO_BORDER);
// PEnset(m_hPE, PEP_bSIMPLEPOINTLEGEND, TRUE);
// PEnset(m_hPE, PEP_bSIMPLELINELEGEND, TRUE);
// PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE);
//
// // Add Some Padding on Right and Bottom //
// PEnset(m_hPE, PEP_nIMAGEADJUSTLEFT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTRIGHT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTBOTTOM, 400);
//
// PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// PEnset(m_hPE, PEP_bLINESHADOWS, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
// PEnset(m_hPE, PEP_nGRADIENTBARS, 8);
// PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);
// float f = 1.2F;
// PEvset(m_hPE, PEP_fFONTSIZEGNCNTL, &f, 1);
}
void CGraphicView::OnBkArea()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
// This example builds upon the basic CreateSimpleGraph '000' example chart //
CreateSimpleGraph();
/////////////////////////////////////////
// Construct a simple table annotation //
/////////////////////////////////////////
// PEnset(m_hPE, PEP_nWORKINGTABLE, 0);
// PEnset(m_hPE, PEP_nTAROWS, 1);
// PEnset(m_hPE, PEP_nTACOLUMNS, 2);
// PEnset(m_hPE, PEP_nTATEXTSIZE, 85);
//
// // Pass the table text //
// char szTmp[48];
// strcpy(szTmp, "Category 1");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 0, szTmp);
// strcpy(szTmp, "Category 2");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 1, szTmp);
//
// // Set column widths ///
// int nWidth = 28;
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 0, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 1, &nWidth);
//
// PEnset(m_hPE, PEP_bSHOWTABLEANNOTATION, TRUE);
//
// PEnset(m_hPE, PEP_nTALOCATION, PETAL_INSIDE_AXIS_0);
// PEnset(m_hPE, PEP_nTAAXISLOCATION, PETAAL_TOP_LEFT);
// PEnset(m_hPE, PEP_nTABORDER, PETAB_SINGLE_LINE);
// PEnset(m_hPE, PEP_dwTABACKCOLOR, RGB(255,255,255));
//
// int nJust = PETAJ_CENTER;
// PEvsetcell(m_hPE, PEP_naTAJUSTIFICATION, 0, &nJust);
// PEvsetcell(m_hPE, PEP_naTAJUSTIFICATION, 1, &nJust);
//
// /////////////////////////////////////////
// // Construct a simple table annotation //
// /////////////////////////////////////////
// PEnset(m_hPE, PEP_nWORKINGTABLE, 1);
// PEnset(m_hPE, PEP_nTAROWS, 1);
// PEnset(m_hPE, PEP_nTACOLUMNS, 4);
// PEnset(m_hPE, PEP_nTATEXTSIZE, 85);
//
// strcpy(szTmp, "Sub Cat 1");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 0, szTmp);
// strcpy(szTmp, "Sub Cat 2");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 1, szTmp);
// strcpy(szTmp, "Sub Cat 3");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 2, szTmp);
// strcpy(szTmp, "Sub Cat 4");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 3, szTmp);
//
// nWidth = 14;
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 0, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 1, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 2, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 3, &nWidth);
//
// nJust = PETAJ_CENTER;
// PEvsetcell(m_hPE, PEP_naTAJUSTIFICATION, 0, &nJust);
// PEvsetcell(m_hPE, PEP_naTAJUSTIFICATION, 1, &nJust);
// PEvsetcell(m_hPE, PEP_naTAJUSTIFICATION, 2, &nJust);
// PEvsetcell(m_hPE, PEP_naTAJUSTIFICATION, 3, &nJust);
//
// PEnset(m_hPE, PEP_dwTABACKCOLOR, RGB(240,240,240));
// PEnset(m_hPE, PEP_bSHOWTABLEANNOTATION, TRUE);
//
// PEnset(m_hPE, PEP_nTALOCATION, PETAL_INSIDE_AXIS_0);
// PEnset(m_hPE, PEP_nTAAXISLOCATION, PETAAL_TOP_LEFT + PETAAL_NEW_ROW);
//
// PEnset(m_hPE, PEP_nTABORDER, PETAB_SINGLE_LINE);
//
// /////////////////////////////////////////
// // Construct a simple table annotation //
// /////////////////////////////////////////
// PEnset(m_hPE, PEP_nWORKINGTABLE, 2);
// PEnset(m_hPE, PEP_nTAROWS, 4);
// PEnset(m_hPE, PEP_nTACOLUMNS, 8);
// PEnset(m_hPE, PEP_nTATEXTSIZE, 85);
//
// // Set Column Widths //
// nWidth = 7;
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 0, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 1, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 2, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 3, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 4, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 5, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 6, &nWidth);
// PEvsetcell(m_hPE, PEP_naTACOLUMNWIDTH, 7, &nWidth);
//
// Pass the table text //
float fp;
int nTmp;
for (int r=0; r<4; r++)
{
for (int c=0; c<8; c++)
{
fp = float(sin(0.3F * (double) c + 1) * 500.0F) + GetRandom(2, 50);
// sprintf(szTmp, "%.2f ", fp);
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, r, c, szTmp);
if (c > 5)
nTmp = RGB(0, 148, 0);
else if (c > 3)
nTmp = RGB(148, 148, 0);
else if (c > 1)
nTmp = RGB(0, 148, 148);
else
nTmp = RGB(198, 0, 0);
// PEvsetcellEx(m_hPE, PEP_dwaTACOLOR, r, c, &nTmp);
// nJust = PETAJ_CENTER;
// PEvsetcellEx(m_hPE, PEP_naTAJUSTIFICATION, r, c, &nJust);
}
}
// Other Table Related Properties ///
// PEnset(m_hPE, PEP_bSHOWTABLEANNOTATION, TRUE);
//
// PEnset(m_hPE, PEP_nTALOCATION, PETAL_INSIDE_AXIS_0);
// PEnset(m_hPE, PEP_nTAAXISLOCATION, PETAAL_TOP_LEFT + PETAAL_NEW_ROW + PETAAL_NEW_ROW);
// PEnset(m_hPE, PEP_nTABORDER, PETAB_SINGLE_LINE);
// PEnset(m_hPE, PEP_dwTABACKCOLOR, RGB(200, 200, 200));
//
// // Done setting Table Annotations ///
//
// // Set Various Other Properties ///
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_SHADOW);
// PEnset(m_hPE, PEP_nGRIDLINECONTROL, PEGLC_BOTH);
// PEnset(m_hPE, PEP_nDATAPRECISION, 0);
//
// double f = 1.5F;
// PEvset(m_hPE, PEP_fAXISNUMBERSPACING, &f, 1);
}
void CGraphicView::OnBkBar()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
// This example builds upon the basic CreateSimpleGraph '000' example chart //
CreateSimpleGraph();
// Construct a simple table annotation //
// PEnset(m_hPE, PEP_nWORKINGTABLE, 0);
// PEnset(m_hPE, PEP_nTAROWS, 4);
// PEnset(m_hPE, PEP_nTACOLUMNS, 7);
// Pass the table text //
char szTmp[48];
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 1, 0, "Row 2 ");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 2, 0, "Row 3 ");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 3, 0, "Row 4 ");
//
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 1, "Column 2 ");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 2, "Column 3 ");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 3, "Column 4 ");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 4, "Column 5 ");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 5, "Column 6 ");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 6, "Column 7 ");
float fp;
int nTmp;
for (int r=1; r<4; r++)
{
for (int c=1; c<7; c++)
{
fp = float(sin(0.3F * (double) c + 1) * 500.0F) + GetRandom(2, 50);
sprintf(szTmp, "%.5f ", fp);
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, r, c, szTmp);
nTmp = RGB(198, 0, 0);
// PEvsetcellEx(m_hPE, PEP_dwaTACOLOR, r, c, &nTmp);
}
}
// // Other Table Related Properties ///
// PEnset(m_hPE, PEP_bSHOWTABLEANNOTATION, TRUE);
// PEnset(m_hPE, PEP_nTALOCATION, PETAL_INSIDE_TOP_LEFT);
// PEnset(m_hPE, PEP_dwTABACKCOLOR, RGB(255,255,255));
// PEnset(m_hPE, PEP_nTAHEADERROWS, 1);
// PEnset(m_hPE, PEP_bTAHEADERCOLUMN, TRUE);
// PEnset(m_hPE, PEP_nTATEXTSIZE, 85);
//
// // Construct a second simple table annotation //
// PEnset(m_hPE, PEP_nWORKINGTABLE, 1); // Note WorkingTable goes to 1
// PEnset(m_hPE, PEP_nTAROWS, 15);
// PEnset(m_hPE, PEP_nTACOLUMNS, 2);
//
// // // Pass the table text //
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 0, "");
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, 0, 1, "Data");
// nTmp = PETAJ_CENTER;
// PEvsetcellEx(m_hPE, PEP_naTAJUSTIFICATION, 0, 0, &nTmp);
// PEvsetcellEx(m_hPE, PEP_naTAJUSTIFICATION, 0, 1, &nTmp);
// First Column Text //
for (r=1; r<15; r++)
{
sprintf(szTmp, "%2d", r);
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, r, 0, szTmp);
}
// // Second Column Text //
for (r=1; r<15; r++)
{
fp = float(sin(0.3F * (double) r + 1) * 500.0F) + GetRandom(2, 50);
sprintf(szTmp, "%.2f", fp);
// PEvsetcellEx(m_hPE, PEP_szaTATEXT, r, 1, szTmp);
}
// Other Table Related Properties ///
// PEnset(m_hPE, PEP_bSHOWTABLEANNOTATION, TRUE);
// PEnset(m_hPE, PEP_nTALOCATION, PETAL_LEFT_CENTER);
// PEnset(m_hPE, PEP_dwTABACKCOLOR, RGB(255,255,255));
// PEnset(m_hPE, PEP_nTAHEADERROWS, 1);
// PEnset(m_hPE, PEP_bTAHEADERCOLUMN, TRUE);
//
// // Done setting Table Annotations ///
//
// // Set Various Other Properties ///
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_LIGHT_INSET);
// PEnset(m_hPE, PEP_nDATAPRECISION, 0);
//
}
void CGraphicView::OnBkBarGroup()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
RECT rect;
GetClientRect( &rect );
m_canReal=FALSE;
// Construct Object //
// m_hPE = PEcreate(PECONTROL_SGRAPH, WS_VISIBLE, &rect, m_hWnd, 1000);
//
// PEnset(m_hPE, PEP_nSUBSETS, 4);
// PEnset(m_hPE, PEP_nPOINTS, 12);
// Change Data to match example scales which are manually configured //
for (int s=0; s<=3; s++)
{
for (int p=0; p<=11; p++)
{
float f;
f = (p + 1) * 10.0F;
// PEvsetcellEx(m_hPE, PEP_faXDATA, s, p, &f);
switch (s)
{
case 0:
f = 0.01F + GetRandom(1, 4);
break;
case 1:
f = 400.0F + GetRandom(1, 450);
break;
case 2:
f = 0.01F + GetRandom(1, 25);
break;
case 3:
f = 0.01F + GetRandom(1, 65);
break;
}
// PEvsetcellEx(m_hPE, PEP_faYDATA, s, p, &f);
}
}
// Now sub-divide subsets into 4 individual axes //
// Each axis with one subset in each //
// int nArray[4] = {1,1,1,1};
// PEvset (m_hPE, PEP_naMULTIAXESSUBSETS, nArray, 4);
//
// // Create Overlapped Axes //
// int nOMA[3] = {1,1,2};
// PEvset (m_hPE, PEP_naOVERLAPMULTIAXES, nOMA, 3);
//
// // Set Proportions of Axes //
// float fMAP[3] = {.2F, .5F, .3F};
// PEvset (m_hPE, PEP_faMULTIAXESPROPORTIONS, fMAP, 3);
//
// // Set up First axis parameters //
// PEnset(m_hPE, PEP_nWORKINGAXIS, 0);
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLY, PEMSC_MINMAX);
// double dMin = 0.0F;
// PEvset(m_hPE, PEP_fMANUALMINY, &dMin, 1);
// double dMax = 5.0F;
// PEvset(m_hPE, PEP_fMANUALMAXY, &dMax, 1);
// PEnset(m_hPE, PEP_bMANUALYAXISTICKNLINE, TRUE);
// double dLine = 2.5F;
// PEvset(m_hPE, PEP_fMANUALYAXISLINE, &dLine, 1);
// double dTick = 0.5F;
// PEvset(m_hPE, PEP_fMANUALYAXISTICK, &dTick, 1);
// PEnset(m_hPE, PEP_nSHOWTICKMARKY, PESTM_TICKS_HIDE);
// PEszset(m_hPE, PEP_szYAXISLABEL, "NPSHR (feet)");
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR);
//
// // Set up Second axis parameters //
// PEnset(m_hPE, PEP_nWORKINGAXIS, 1);
// PEnset(m_hPE, PEP_nRYAXISCOMPARISONSUBSETS, 1);
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLRY, PEMSC_MINMAX);
// dMin = 400.0F;
// PEvset(m_hPE, PEP_fMANUALMINRY, &dMin, 1);
// dMax = 900.0F;
// PEvset(m_hPE, PEP_fMANUALMAXRY, &dMax, 1);
// PEnset(m_hPE, PEP_bMANUALRYAXISTICKNLINE, TRUE);
// dLine = 100.0F;
// PEvset(m_hPE, PEP_fMANUALRYAXISLINE, &dLine, 1);
// dTick = 20.0F;
// PEvset(m_hPE, PEP_fMANUALRYAXISTICK, &dTick, 1);
// PEnset(m_hPE, PEP_nSHOWTICKMARKRY, PESTM_TICKS_HIDE);
// PEszset(m_hPE, PEP_szRYAXISLABEL, "Total Head (feet)");
// PEnset(m_hPE, PEP_nPLOTTINGMETHODII, PEGPM_POINTSPLUSSPLINE);
//
// // Set up Third axis parameters //
// PEnset(m_hPE, PEP_nWORKINGAXIS, 2);
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLY, PEMSC_MINMAX);
// dMin = 0.0F;
// PEvset(m_hPE, PEP_fMANUALMINY, &dMin, 1);
// dMax = 30.0F;
// PEvset(m_hPE, PEP_fMANUALMAXY, &dMax, 1);
// PEnset(m_hPE, PEP_bMANUALYAXISTICKNLINE, TRUE);
// dLine = 10.0F;
// PEvset(m_hPE, PEP_fMANUALYAXISLINE, &dLine, 1);
// dTick = 2.0F;
// PEvset(m_hPE, PEP_fMANUALYAXISTICK, &dTick, 1);
// PEnset(m_hPE, PEP_nSHOWTICKMARKY, PESTM_TICKS_HIDE);
// PEszset(m_hPE, PEP_szYAXISLABEL, "Efficiency (%)");
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_POINTSPLUSSPLINE);
//
// // Set up Fourth axis parameters //
// PEnset(m_hPE, PEP_nWORKINGAXIS, 3);
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLY, PEMSC_MINMAX);
// dMin = 0.0F;
// PEvset(m_hPE, PEP_fMANUALMINY, &dMin, 1);
// dMax = 75.0F;
// PEvset(m_hPE, PEP_fMANUALMAXY, &dMax, 1);
// PEnset(m_hPE, PEP_bMANUALYAXISTICKNLINE, TRUE);
// dLine = 25.0F;
// PEvset(m_hPE, PEP_fMANUALYAXISLINE, &dLine, 1);
// dTick = 5.0F;
// PEvset(m_hPE, PEP_fMANUALYAXISTICK, &dTick, 1);
// PEnset(m_hPE, PEP_nSHOWTICKMARKY, PESTM_TICKS_HIDE);
// PEszset(m_hPE, PEP_szYAXISLABEL, "Power(HP)");
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_POINTSPLUSSPLINE);
//
// // Done Setting Y Axis Parameters, reset WorkingAxis //
// PEnset(m_hPE, PEP_nWORKINGAXIS, 0);
//
// // Set various other properties //
// PEnset(m_hPE, PEP_nGRIDLINECONTROL, PEGLC_BOTH);
// PEnset(m_hPE, PEP_nMULTIAXISSTYLE, PEMAS_GROUP_ALL_AXES);
// PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE_INSIDE_OVERLAP);
//
// PEszset(m_hPE, PEP_szXAXISLABEL, "Flow (gpm)");
//
// PEnset(m_hPE, PEP_nBORDERTYPES, PETAB_SINGLE_LINE);
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_MEDIUM);
// PEszset(m_hPE, PEP_szMAINTITLE, "");
// PEszset(m_hPE, PEP_szSUBTITLE, "");
// PEszset(m_hPE, PEP_szSUBTITLEFONT, "Courier New");
//
// float fSize = 1.1F;
// PEvset(m_hPE, PEP_fFONTSIZEMSCNTL, &fSize, 1);
// PEvset(m_hPE, PEP_fFONTSIZEMBCNTL, &fSize, 1);
//
//
// PEvsetcell(m_hPE, PEP_szaMULTISUBTITLES, 0, "PUMP PREDICTED PERFORMANCE|Units: US Customary|Date: 06/07/2002");
// PEvsetcell(m_hPE, PEP_szaMULTISUBTITLES, 1, "Impeller Diameter (in): Max = 11.875, Rated = 11.72, Min =11.062||");
//
// PEvsetcell(m_hPE, PEP_szaMULTIBOTTOMTITLES, 1, "Customer: Since fixed length courier font, you can create rows by number of spaces, ||");
// PEvsetcell(m_hPE, PEP_szaMULTIBOTTOMTITLES, 0, "Pump Model: or, v5 has a table annotation feature which could be used to add text here. ||");
//
// PEnset(m_hPE, PEP_bYAXISONRIGHT, TRUE);
//
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 0, "NPSHR");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 1, "Head");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 2, "Efficiency");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 3, "Power");
//
// PEnset(m_hPE, PEP_nMULTIAXISSTYLEMENU, PEMC_SHOW);
// PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_NONE);
// PEnset(m_hPE, PEP_nALLOWZOOMING, PEAZ_HORZANDVERT);
// PEnset(m_hPE, PEP_nZOOMSTYLE, PEZS_RO2_NOT);
//
// PEnset(m_hPE, PEP_bSIMPLELINELEGEND, TRUE);
// PEnset(m_hPE, PEP_bSIMPLEPOINTLEGEND, TRUE);
//
// DWORD dwArray[4] = { RGB(198,0,0), RGB( 0, 198, 198 ), RGB( 198,198,0 ), RGB( 0,198,0 ) };
// PEvset(m_hPE, PEP_dwaSUBSETCOLORS, dwArray, 4);
//
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_DARK_NO_BORDER);
//
// PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// PEnset(m_hPE, PEP_bLINESHADOWS, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
// PEnset(m_hPE, PEP_nGRADIENTBARS, 8);
// PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);
}
void CGraphicView::OnBkPie()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
//! Double Click to start and stop Auto Rotation. //
//! Click and drag scroll bar thumb tabs to quickly rotate. //
//! Right button click to show popup menu. //
RECT rect;
GetClientRect( &rect );
//// m_hPE = PEcreate(PECONTROL_3D, WS_VISIBLE, &rect, m_hWnd, 1001);
// Non-Surface chart, set PolyMode //
// PEnset(m_hPE, PEP_nPOLYMODE, PEPM_3DBAR);
// Pass Data //
double sMin, sMax;
long Row, Col, o, s, e, nQ;
long nStartRow, nEndRow, nStartCol, nEndCol, nTargetRows, nTargetCols;
nStartRow = 216;
nEndRow = 230;
nTargetRows = nEndRow - nStartRow + 1;
nStartCol = 156;
nEndCol = 170;
nTargetCols = nEndCol - nStartCol + 1;
nQ = nTargetRows * nTargetCols;
long* pElevData = NULL;
float* pMyXData = NULL;
float* pMyYData = NULL;
float* pMyZData = NULL;
char szFile[] = "terrain.bin";
FILE * pFile = NULL;
pFile = fopen(szFile, "rb");
if (pFile)
{
pElevData = new long[202500];
// Transfer entire data file into memory //
size_t cnt;
e = 0;
for (s = 0; s < 45; s++)
{
cnt = fread(&pElevData[e], sizeof(long), 4500, pFile);
e += 4500;
}
fclose(pFile);
}
else
{
MessageBox("Data File [terrain.bin] not found in program directory.");
return;
}
pMyXData = new float[nQ];
pMyYData = new float[nQ];
pMyZData = new float[nQ];
long rowcounter, colcounter;
BOOL foundtargetindex = FALSE;
rowcounter = 0;
colcounter = 0;
sMax = -9999999.9F;
sMin = 9999999.9F;
for (Row=0; Row<450; Row++)
{
for (Col=0; Col<450; Col++)
{
foundtargetindex = FALSE;
if (Row >= nStartRow && Row <= nEndRow)
{
if (Col >= nStartCol && Col <= nEndCol)
{
foundtargetindex = TRUE;
o = (rowcounter * nTargetRows) + colcounter;
pMyXData[o] = (float) Col + 1;
pMyZData[o] = (float) Row + 1;
pMyYData[o] = pElevData[(Row * 450) + Col] * 0.1F;
}
}
if (foundtargetindex)
colcounter++;
}
if (foundtargetindex)
rowcounter++;
}
// PEnset(m_hPE, PEP_nSUBSETS, nTargetRows);
// PEnset(m_hPE, PEP_nPOINTS, nTargetCols);
// Perform the actual transfer of data //
// PEvset(m_hPE, PEP_faXDATA, pMyXData, nQ);
// PEvset(m_hPE, PEP_faYDATA, pMyYData, nQ);
// PEvset(m_hPE, PEP_faZDATA, pMyZData, nQ);
if (pElevData)
delete pElevData;
if (pMyXData)
delete pMyXData;
if (pMyYData)
delete pMyYData;
if (pMyZData)
delete pMyZData;
// Set Various Other Properties //
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
//// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_DARK_SHADOW);
DWORD dwColor[] = {RGB(0, 148, 0), RGB(148, 0, 0), RGB(0, 0, 148),
RGB(148, 148, 0), RGB(0, 148, 148),
RGB(0, 182, 0), RGB(182, 0, 0), RGB(0, 0, 182),
RGB(182, 182, 0), RGB(0, 182, 182),
RGB(0, 198, 0), RGB(198, 0, 0), RGB(0, 0, 198),
RGB(198, 198, 0), RGB(0, 198, 148) };
/// PEvset(m_hPE, PEP_dwaSUBSETCOLORS, dwColor, 15);
// Set subset labels for z axis**
//// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 0, "Row 1");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 1, "Row 2");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 2, "Row 3");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 3, "Row 4");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 4, "Row 5");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 5, "Row 6");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 6, "Row 7");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 7, "Row 8");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 8, "Row 9");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 9, "Row 10");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 10, "Row 11");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 11, "Row 12");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 12, "Row 13");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 13, "Row 14");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 14, "Row 15");
// Set point labels for x axis //
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 0, "Col 1");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 1, "Col 2");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 2, "Col 3");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 3, "Col 4");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 4, "Col 5");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 5, "Col 6");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 6, "Col 7");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 7, "Col 8");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 8, "Col 9");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 9, "Col 10");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 10, "Col 11");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 11, "Col 12");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 12, "Col 13");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 13, "Col 14");
// PEvsetcell(m_hPE, PEP_szaPOINTLABELS, 14, "Col 15");
//
// Set Titles //
// PEszset(m_hPE, PEP_szMAINTITLE, "3D Bar");
// PEszset(m_hPE, PEP_szSUBTITLE, "");
// Set camera position //
// PEnset(m_hPE, PEP_nVIEWINGHEIGHT, 15);
// PEnset(m_hPE, PEP_nDEGREEOFROTATION, 314);
// Set Plotting methods //
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, 2); // ' Shading
// Full rotation detail //
// PEnset(m_hPE, PEP_nROTATIONDETAIL, PERD_FULLDETAIL);
// Set small font size //
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_SMALL);
// Prepare images in memory //
// PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
// PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
// PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
// PEnset(m_hPE, PEP_bALLOWSTYLEPAGE, FALSE);
// PEnset(m_hPE, PEP_nROTATIONINCREMENT, PERI_INCBY2);
// // Add Some Padding on Right and Bottom //
// PEnset(m_hPE, PEP_nIMAGEADJUSTLEFT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTRIGHT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTBOTTOM, 400);
// PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
// PEnset(m_hPE, PEP_dwGRAPHFORECOLOR, RGB(192,192,192));
}
void CGraphicView::OnButton32781()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
//! Double Click to start and stop Auto Rotation. //
//! Click and drag scroll bar thumb tabs to quickly rotate. //
//! Right button click to show popup menu. //
RECT rect;
GetClientRect( &rect );
//// m_hPE = PEcreate(PECONTROL_3D, WS_VISIBLE, &rect, m_hWnd, 1001);
// Non-Surface chart, set PolyMode //
// PEnset(m_hPE, PEP_nPOLYMODE, PEPM_SCATTER);
// Set the amount of data //
// PEnset(m_hPE, PEP_nSUBSETS, 10);
// PEnset(m_hPE, PEP_nPOINTS, 50);
// Pass data, First two subsets //
float f, f2;
for (int s=0; s<=1; s++)
{
for (int p=0; p<=49; p++)
{
f2 = 5.0F * (float)cos(p * .24);
// PEvsetcellEx(m_hPE, PEP_faXDATA, s, p, &f2);
if (s == 0)
f = (35.0F * (float)cos(p * 0.22F)) + (10.0F * (float)sin((s * .1F) * .94F));
else
f = (35.0F * (float)cos(p * 0.08F)) + (10.0F * (float)cos((s * .25F) * .6F));
// PEvsetcellEx(m_hPE, PEP_faYDATA, s, p, &f);
f = 5.0F * (float)(sin(p * .08F));
// PEvsetcellEx(m_hPE, PEP_faZDATA, s, p, &f);
}
}
// Pass more data, Second two subsets //
for (s=0; s<=1; s++)
{
for (int p=0; p<=49; p++)
{
f2 = 5.0F * (float)cos(p * .14);
f2 += 20;
// PEvsetcellEx(m_hPE, PEP_faXDATA, s + 2, p, &f2);
if (s == 0)
f = (35.0F * (float)cos(p * 0.2F)) + (10.0F * (float)sin((s * .1F) * .74F));
else
f = (35.0F * (float)cos(p * 0.1F)) + (10.0F * (float)cos((s * .25F) * .74F));
f += 40;
// PEvsetcellEx(m_hPE, PEP_faYDATA, s + 2, p, &f);
f = 5.0F * (float)(sin(p * .16F));
f += 20;
// PEvsetcellEx(m_hPE, PEP_faZDATA, s + 2, p, &f);
}
}
// Pass more data, Third two subsets //
for (s=0; s<=1; s++)
{
for (int p=0; p<=49; p++)
{
f2 = 5.0F * (float)cos(p * .07);
f2 -= 20;
// PEvsetcellEx(m_hPE, PEP_faXDATA, s + 4, p, &f2);
if (s == 0)
f = (35.0F * (float)cos(p * 0.08F)) + (10.0F * (float)sin((s * .07F) * .64F));
else
f = (35.0F * (float)cos(p * 0.2F)) + (10.0F * (float)cos((s * .15F) * 1.94F));
f += 40;
// PEvsetcellEx(m_hPE, PEP_faYDATA, s + 4, p, &f);
f = 5.0F * (float)(sin(p * .09F));
f += 20;
// PEvsetcellEx(m_hPE, PEP_faZDATA, s + 4, p, &f);
}
}
// Pass more data, Fourth two subsets //
for (s=0; s<=1; s++)
{
for (int p=0; p<=49; p++)
{
f2 = 5.0F * (float)cos(p * .12);
f2 -= 20;
// PEvsetcellEx(m_hPE, PEP_faXDATA, s + 6, p, &f2);
if (s == 0)
f = (35.0F * (float)cos(p * 0.3F)) + (10.0F * (float)sin((s * .08F) * 1.74F));
else
f = (35.0F * (float)cos(p * 0.2F)) + (10.0F * (float)cos((s * .75F) * .774F));
f -= 40;
// PEvsetcellEx(m_hPE, PEP_faYDATA, s + 6, p, &f);
f = 5.0F * (float)(sin(p * .36F));
f -= 20;
// PEvsetcellEx(m_hPE, PEP_faZDATA, s + 6, p, &f);
}
}
// Pass more data, Fifth two subsets //
for (s=0; s<=1; s++)
{
for (int p=0; p<=49; p++)
{
f2 = 5.0F * (float)cos(p * .14);
f2 += 20;
// PEvsetcellEx(m_hPE, PEP_faXDATA, s + 8, p, &f2);
if (s == 0)
f = (25.0F * (float)cos(p * 0.1F)) + (10.0F * (float)sin((s * .02F) * 3.74F));
else
f = (55.0F * (float)cos(p * 0.2F)) + (10.0F * (float)cos((s * .05F) * 5.74F));
f += 40;
// PEvsetcellEx(m_hPE, PEP_faYDATA, s + 8, p, &f);
f = 5.0F * (float)(sin(p * .16F));
f -= 20;
// PEvsetcellEx(m_hPE, PEP_faZDATA, s + 8, p, &f);
}
}
// Set Various Other Properties //
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, FALSE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_DARK_INSET);
DWORD dwColor[] = {RGB(198, 198, 0), RGB(0, 198, 198), RGB(0, 198, 0), RGB(198, 0, 0), RGB(0, 0, 198),
RGB(192,192,192), RGB(198, 0, 198), RGB(200, 198, 150), RGB(200, 200, 140), RGB(150, 0, 198)};
// PEvset(m_hPE, PEP_dwaSUBSETCOLORS, dwColor, 10);
// int nPTypes[] = {PEPT_PLUS, PEPT_PLUS, PEPT_PLUS, PEPT_PLUS, PEPT_PLUS, PEPT_PLUS, PEPT_PLUS, PEPT_PLUS, PEPT_PLUS, PEPT_PLUS};
// PEvset(m_hPE, PEP_naSUBSETPOINTTYPES, nPTypes, 10);
// Set subset labels and titles //
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 0, "Data 1");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 1, "Data 2");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 2, "Data 3");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 3, "Data 4");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 4, "Data 5");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 5, "Data 6");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 6, "Data 7");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 7, "Data 8");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 8, "Data 9");
// PEvsetcell(m_hPE, PEP_szaSUBSETLABELS, 9, "Data 10");
//
// PEszset(m_hPE, PEP_szMAINTITLE, "3D Scatter");
// PEszset(m_hPE, PEP_szSUBTITLE, "");
// Set camera position //
// PEnset(m_hPE, PEP_nVIEWINGHEIGHT, 15);
// PEnset(m_hPE, PEP_nDEGREEOFROTATION, 145);
// Set Plotting methods //
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, 0); // ' Points
// Set small font size //
// PEnset(m_hPE, PEP_nFONTSIZE, PEFS_MEDIUM);
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
// Set legend location //
// PEnset(m_hPE, PEP_nLEGENDLOCATION, PELL_LEFT);
// Prepare images in memory //
// PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
// PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
// PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
// PEnset(m_hPE, PEP_nROTATIONDETAIL, PERD_FULLDETAIL);
// PEnset(m_hPE, PEP_nROTATIONSPEED, 50);
// PEnset(m_hPE, PEP_nROTATIONINCREMENT, PERI_INCBY1);
// PEnset(m_hPE, PEP_bAUTOROTATION, TRUE);
// PEnset(m_hPE, PEP_bSHOWLEGEND, FALSE);
// // Add Some Padding around image //
// PEnset(m_hPE, PEP_nIMAGEADJUSTLEFT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTRIGHT, 400);
// PEnset(m_hPE, PEP_nIMAGEADJUSTBOTTOM, 400);
// PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// // PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
// PEnset(m_hPE, PEP_dwGRAPHFORECOLOR, RGB(192,192,192));
}
void CGraphicView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
if(m_hPE)
// PEdestroy(m_hPE);
CreateSimpleGraph();
// TODO: Add your message handler code here
}
void CGraphicView::OnDrawNew()
{
if(m_hPE)
// PEdestroy(m_hPE);
// This example builds upon the basic CreateSimpleGraph '000' example chart //
CreateSimpleGraph();
int nHatchType[4];
// nHatchType[0] = PEHS_BDIAGONAL;
// nHatchType[1] = PEHS_CROSS;
// nHatchType[2] = PEHS_DIAGCROSS;
// nHatchType[3] = PEHS_FDIAGONAL;
// PEvset(m_hPE, PEP_naSUBSETHATCH, nHatchType, 4);
// Set Other Various Properties ///
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_INSET);
// Enable Stacked type charts //
// PEnset(m_hPE, PEP_bNOSTACKEDDATA, FALSE);
// Set plotting method //
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_BARSTACKED);
// PEnset(m_hPE, PEP_dwHATCHBACKCOLOR, RGB(100,100,100));
// PEnset(m_hPE, PEP_bDATASHADOWS, PEDS_SHADOWS);
// Add a table //
// PEnset(m_hPE, PEP_nGRAPHPLUSTABLE, PEGPT_BOTH);
// PEnset(m_hPE, PEP_nDATAPRECISION, 0);
}
void CGraphicView::OnDrawSile()
{
if(m_hPE)
// PEdestroy(m_hPE);
//! Cross-Hair inside chart is a cursor giving a datapoint the focus //
//! Use arrow keys or mouse to move cursor to a new location //
//! You must click the control to give it the focus before key strokes will work. //
//! Right and Left arrow keys move cursor up and down points //
//! Up and Down arrow keys move cursor up and down subsets //
// This example builds upon the basic CreateSimpleSGraph '100' example chart //
CreateSimpleSGraph();
// Set up cursor //
// PEnset(m_hPE, PEP_nCURSORMODE, PECM_DATACROSS);
// Help see data points //
// PEnset(m_hPE, PEP_bMARKDATAPOINTS, TRUE);
// This will allow you to move cursor by clicking data point //
// PEnset(m_hPE, PEP_bMOUSECURSORCONTROL, TRUE);
// PEnset(m_hPE, PEP_bALLOWDATAHOTSPOTS, TRUE);
// Cursor prompting in top left corner //
// PEnset(m_hPE, PEP_bCURSORPROMPTTRACKING, TRUE);
// PEnset(m_hPE, PEP_nCURSORPROMPTSTYLE, PECPS_XYVALUES);
// PEnset(m_hPE, PEP_nCURSORPROMPTLOCATION, PECPL_TOP_RIGHT);
// Disable Zooming //
// PEnset(m_hPE, PEP_nALLOWZOOMING, PEAZ_NONE);
// Other possible values for cursor mode are below, //
// PECM_NOCURSOR = 0
// PECM_POINT = 1
// PECM_DATACROSS = 2
// PECM_DATASQUARE = 3
// PECM_FLOATINGY = 4
// PECM_FLOATINGXY = 5
// Uncomment to start cursor at different location //
// NOTE: You must reinitialize before setting cursor location //
// PEreinitialize(m_hPE);
// PEresetimage(m_hPE, 0, 0);
// PEnset(m_hPE, PEP_nCURSORSUBSET, 0);
// PEnset(m_hPE, PEP_nCURSORPOINT, 2);
////////////////////////////////////////////////////////////////////////
// Look in OnCommand handler to see how to respond to cursor movement //
////////////////////////////////////////////////////////////////////////
/*
else if ((m_nLastSelection == 105) && (HIWORD(wp) == PEWN_CURSORMOVE))
{
int nSubset, nPoint;
float xvalue, yvalue;
char buffer[64];
nSubset = PEnget(m_hPE, PEP_nCURSORSUBSET);
nPoint = PEnget(m_hPE, PEP_nCURSORPOINT);
PEvgetcellEx(m_hPE, PEP_faXDATA, nSubset, nPoint, &xvalue);
PEvgetcellEx(m_hPE, PEP_faYDATA, nSubset, nPoint, &yvalue);
sprintf(buffer, "Cursor at %d,%d=(%.2f, %.2f)", nSubset, nPoint, xvalue, yvalue);
CWnd* pParent = GetParent()->GetParent();
if (pParent) {pParent->SetWindowText(buffer);}
pParent = AfxGetMainWnd();
if (pParent) {pParent->SetWindowText("PEWN_CURSORMOVE");}
return TRUE;
}
*/
}
void CGraphicView::CreateSimpleSGraph()
{
if(m_hPE)
// PEdestroy(m_hPE);
m_Real=FALSE;
m_canReal=FALSE;
//! Right button click to show popup menu. //
//! Double Click to show customization dialog. //
//! Left-Click and drag to draw zoom box. Use popup memu or 'z' to undo zoom. //
// Simple example show the basics of a scientific graph object. //
// Scientific Graph's contain both YData and XData and thus data
// is not plotted equally spaced as the graph object does.
RECT rect;
GetClientRect( &rect );
//// m_hPE = PEcreate(PECONTROL_SGRAPH, WS_VISIBLE, &rect, m_hWnd, 1001);
if( m_hPE )
{
float fY;
float fX;
// Set number of Subsets and Points //
/// PEnset(m_hPE, PEP_nSUBSETS, 4);
// PEnset(m_hPE, PEP_nPOINTS, 12);
for( int s=0; s<=3; s++ )
{
for( int p=0; p<=11; p++ )
{
fX = ((float) (p+1)) * 100.0F;
// PEvsetcellEx (m_hPE, PEP_faXDATA, s, p, &fX);
fY = ((float) (p+1) * 1.0F) + GetRandom(1, 250);
// PEvsetcellEx (m_hPE, PEP_faYDATA, s, p, &fY);
}
}
// Set DataShadows to show shadows
// PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);
// PEszset(m_hPE, PEP_szMAINTITLE, "<22><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
// PEszset(m_hPE, PEP_szSUBTITLE, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>--<2D>ݸ<EFBFBD>");
// PEszset(m_hPE, PEP_szYAXISLABEL, "<22><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>");
// PEszset(m_hPE, PEP_szXAXISLABEL, "<22>·<EFBFBD>");
// PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
// PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
// PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
// PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_POINTSPLUSSPLINE);
// PEnset(m_hPE, PEP_nGRIDLINECONTROL, PEGLC_NONE);
// PEnset(m_hPE, PEP_nALLOWZOOMING, PEAZ_HORZANDVERT);
//// PEnset(m_hPE, PEP_nZOOMSTYLE, PEZS_RO2_NOT);
// subset labels //
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 0, "<22><>ɳ" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 1, "<22>Ϻ<EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 2, "<22><><EFBFBD><EFBFBD>" );
// PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 3, "<22><><EFBFBD><EFBFBD>" );
//
// subset colors
DWORD dwArray[4] = { RGB(198,0,0), RGB( 0, 198, 198 ), RGB( 198,198,0 ), RGB( 0,198,0 ) };
// PEvsetEx( m_hPE, PEP_dwaSUBSETCOLORS, 0, 4, dwArray, 0 );
// subset line types
// int nLineTypes[] = { PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, PELT_MEDIUMSOLID };
// PEvset(m_hPE, PEP_naSUBSETLINETYPES, nLineTypes, 4);
// subset point types
//////// int nPointTypes[] = { PEPT_DOTSOLID, PEPT_UPTRIANGLESOLID, PEPT_SQUARESOLID, PEPT_DOWNTRIANGLESOLID };
// PEvset(m_hPE, PEP_naSUBSETPOINTTYPES, nPointTypes, 4);
// Version 4.0 Features //
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
// PEnset(m_hPE, PEP_bSIMPLEPOINTLEGEND, TRUE);
// PEnset(m_hPE, PEP_bSIMPLELINELEGEND, TRUE);
// // PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE);
// PEnset(m_hPE, PEP_nMULTIAXISSTYLE, PEMAS_SEPARATE_AXES);
// Set Various Other Properties //
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_NO_BORDER);
// PEnset(m_hPE, PEP_nGRADIENTBARS, 8);
// // PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// PEnset(m_hPE, PEP_bLINESHADOWS, TRUE);
// // PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
// PEnset(m_hPE, PEP_bSCROLLINGHORZZOOM, TRUE);
}
}
void CGraphicView::OnReal()
{
KillTimer(1);
if(m_hPE)
// PEdestroy(m_hPE);
m_canReal=TRUE;
m_Real=TRUE;
//! Chart holds 2000 points. Data is fed into
//! data arrays at current data index. Once 2000
//! points have been passed, 250 are truncated as
//! data is shifted to make room for 250 more data
//! points.
//! Depending upon ZoomMode property, this example with
//! either show most current 3 minutes or all data in
//! object.
RECT rect;
GetClientRect( &rect );
// Construct Object //
// m_hPE = PEcreate(PECONTROL_SGRAPH, WS_CHILD|WS_VISIBLE, &rect, m_hWnd, 1001);
// PEnset(m_hPE, PEP_nSUBSETS, 3);
// PEnset(m_hPE, PEP_nPOINTS, 2000);
// PEnset(m_hPE, PEP_nDATETIMEMODE, PEDTM_VB); // Date/Time Mode
// PEnset(m_hPE, PEP_bUSINGXDATAII, TRUE); // Using Double Precision XDataII
// Some functional attributes // 1440 is minutes in a day
ZoomInterval = (3.0F / 1440.0F); // 3 minute scale zoom interval
ZoomSmallInterval = (0.5F / 1440.0F); // 30 second scale adjustment
// Determine current date and time in VB's format //
CTime t = CTime::GetCurrentTime();
//// TM petm;
// petm.nDay = t.GetDay();
// petm.nMonth = t.GetMonth();
// petm.nYear = t.GetYear() - 1900;
// petm.nHour = t.GetHour();
// petm.nMinute = t.GetMinute();
// petm.nSecond = t.GetSecond();
// PEcreateserialdate(&StartTime, &petm, PEDTM_VB);
// Extents to show all data points
double manmaxx;
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLX, PEMSC_MINMAX);
// PEvset(m_hPE, PEP_fMANUALMINX, &StartTime, 1);
manmaxx = StartTime + ZoomInterval;
// PEvset(m_hPE, PEP_fMANUALMAXX, &manmaxx, 1);
// PEnset(m_hPE, PEP_nMANUALSCALECONTROLY, PEMSC_MINMAX);
double d = 1.0F;
// PEvset(m_hPE, PEP_fMANUALMINY, &d, 1);
d = 100.0F;
// PEvset(m_hPE, PEP_fMANUALMAXY, &d, 1);
// Set Zoomed partial Range of X Scale //
ZoomStart = StartTime;
ZoomEnd = ZoomStart + ZoomInterval;
// PEvset(m_hPE, PEP_fZOOMMINX, &ZoomStart, 1);
// PEvset(m_hPE, PEP_fZOOMMAXX, &ZoomEnd, 1);
// d = 1.0F;
// PEvset(m_hPE, PEP_fZOOMMINY, &d, 1);
// d = 100.0F;
// PEvset(m_hPE, PEP_fZOOMMAXY, &d, 1);
//
// // PEnset(m_hPE, PEP_bZOOMMODE, TRUE);
// If ZoomMode is True, you will see 3 minutes of data //
// If ZoomMode is False, you will see all data in object //
// Clear out default data '
// No need to clear out XData since using XDataII '
float f = 0.0F;
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 0, &f);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 1, &f);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 2, &f);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 3, &f);
//
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, 0, &f);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, 1, &f);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, 2, &f);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, 3, &f);
//
// PEvsetcellEx(m_hPE, PEP_faYDATA, 2, 0, &f);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 2, 1, &f);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 2, 2, &f);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 2, 3, &f);
//
// Show Annotations //
// PEnset(m_hPE, PEP_bSHOWANNOTATIONS, TRUE);
//
// // Set Various Other Properties ///
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// // PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_DARK_INSET);
//
// int nTmpStyle;
// // nTmpStyle = PELT_THINSOLID;
// PEvsetcell(m_hPE, PEP_naSUBSETLINETYPES, 0, &nTmpStyle);
// PEvsetcell(m_hPE, PEP_naSUBSETLINETYPES, 1, &nTmpStyle);
// PEvsetcell(m_hPE, PEP_naSUBSETLINETYPES, 2, &nTmpStyle);
// PEvset(m_hPE, PEP_naSUBSETLINETYPES, PELT_THINSOLID, 0);
char szSubsets[] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t<EFBFBD><EFBFBD>ѹ\tƵ<EFBFBD><EFBFBD>\t";
// PEvset (m_hPE, PEP_szaSUBSETLABELS, szSubsets, 3);
//
// PEszset(m_hPE, PEP_szMAINTITLE, "<22><>ҵ<EFBFBD><D2B5>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>");
// PEszset(m_hPE, PEP_szSUBTITLE, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>-<2D>ݸ<EFBFBD>");
// PEnset(m_hPE, PEP_bNORANDOMPOINTSTOEXPORT, TRUE);
// PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
// PEnset(m_hPE, PEP_bALLOWBAR, FALSE);
// PEnset(m_hPE, PEP_bALLOWPOPUP, FALSE);
// PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
// PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
DWORD col = RGB(0, 198, 198);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 0, &col);
//
// col = RGB(0,198,0);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 1, &col);
//
// col = RGB(255,0,0);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 2, &col);
//
// PEnset(m_hPE, PEP_nGRADIENTBARS, 8);
// // PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// PEnset(m_hPE, PEP_bLINESHADOWS, TRUE);
// // PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
//
// // PEreinitialize(m_hPE);
// PEresetimage(m_hPE, 0, 0);
::InvalidateRect(m_hPE, NULL, FALSE);
// Initialize Counters and Timer //
m_nRealTimeCounter = 1;
m_nSinCounter = 1;
SetTimer( 2, 250, NULL );
}
void CGraphicView::OnDrawgraph()
{
if(m_hPE)
{
// PEdestroy(m_hPE);
Invalidate();
}
m_Real=TRUE;
m_canReal=TRUE;
//! Chart fills 100 points but x axis is initially
//! manually scaled. Once 100 point have been passed,
//! the chart switches to autoscaling the x axis.
RECT rect;
GetClientRect( &rect );
// Construct Object //
// m_hPE = PEcreate(PECONTROL_SGRAPH, WS_VISIBLE, &rect, m_hWnd, 1001);
// PEnset(m_hPE, PEP_nSUBSETS, 1);
// PEnset(m_hPE, PEP_nPOINTS, 100);
//
// // Set Manual Y scale //
// // PEnset(m_hPE, PEP_nMANUALSCALECONTROLY, PEMSC_MINMAX);
// double arg = 1.0F;
// PEvset(m_hPE, PEP_fMANUALMINY, &arg, 1);
// arg = 100.0F;
// PEvset(m_hPE, PEP_fMANUALMAXY, &arg, 1);
//
// // Set Manual X scale //
// // PEnset(m_hPE, PEP_nMANUALSCALECONTROLX, PEMSC_MINMAX);
// arg = 1.0F;
// PEvset(m_hPE, PEP_fMANUALMINX, &arg, 1);
// arg = 100;
// PEvset(m_hPE, PEP_fMANUALMAXX, &arg, 1);
//
// // Clear out default data //
// float val = 0;
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, 0, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, 1, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, 2, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 0, 3, &val);
//
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 0, &val);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 1, &val);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 2, &val);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 0, 3, &val);
//
// PEvsetcellEx(m_hPE, PEP_faXDATA, 1, 0, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 1, 1, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 1, 2, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 1, 3, &val);
//
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, 0, &val);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, 1, &val);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, 2, &val);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 1, 3, &val);
//
// PEvsetcellEx(m_hPE, PEP_faXDATA, 2, 0, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 2, 1, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 2, 2, &val);
// PEvsetcellEx(m_hPE, PEP_faXDATA, 2, 3, &val);
//
// PEvsetcellEx(m_hPE, PEP_faYDATA, 2, 0, &val);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 2, 1, &val);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 2, 2, &val);
// PEvsetcellEx(m_hPE, PEP_faYDATA, 2, 3, &val);
//
// int nTmpStyle;
// // nTmpStyle = PELT_THINSOLID;
// PEvsetcell(m_hPE, PEP_naSUBSETLINETYPES, 0, &nTmpStyle);
// PEvsetcell(m_hPE, PEP_naSUBSETLINETYPES, 1, &nTmpStyle);
// PEvsetcell(m_hPE, PEP_naSUBSETLINETYPES, 2, &nTmpStyle);
// // PEvset(m_hPE, PEP_naSUBSETLINETYPES, PELT_THINSOLID, 0);
//
// char szSubsets[] = "<22><><EFBFBD><EFBFBD>\t<><74>ѹ\tƵ<74><C6B5>\t";
// PEvset (m_hPE, PEP_szaSUBSETLABELS, szSubsets, 3);
//
// // Set Various Other Properties ///
// PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
// // PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_INSET);
//
// PEszset(m_hPE, PEP_szMAINTITLE, "<22><>ҵ<EFBFBD><D2B5>ʵʱ<CAB5><CAB1><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>");
//
// PEszset(m_hPE, PEP_szSUBTITLE, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>-<2D>ݸ<EFBFBD>");
// PEnset(m_hPE, PEP_bNORANDOMPOINTSTOEXPORT, TRUE);
// PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
// PEnset(m_hPE, PEP_bALLOWBAR, FALSE);
// PEnset(m_hPE, PEP_bALLOWPOPUP, FALSE);
// PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
// PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
// PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
//
// DWORD col = RGB(255, 0, 0);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 0, &col);
//
// col = RGB(0,198,0);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 1, &col);
//
// col = RGB(255,0,0);
// PEvsetcell(m_hPE, PEP_dwaSUBSETCOLORS, 2, &col);
// //
// // PEnset(m_hPE, PEP_nGRADIENTBARS, 8);
// // PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
// // PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
// // PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
// // PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
// // PEnset(m_hPE, PEP_bLINESHADOWS, TRUE);
// // PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);
// PEreinitialize(m_hPE);
// PEresetimage(m_hPE, 0, 0);
// Initialize Counters and Timer
m_nRealTimeCounter = 1;
m_nSinCounter = 1;
SetTimer( 1, 100, NULL );
}