ProEssentials第000例SimpleGraph,使用DLL单文档VC6.0实现

来源:互联网 发布:屏幕量角器软件 编辑:程序博客网 时间:2024/06/01 08:51

PE安装不再介绍,看前面的博客。PE下载链接

本例程下载链接

1、新建单文档程序,名称“000SimpleGraph”。

2.、配置库文件目录

当前工程下新建一\Lib\ProEssentials目录,放置PEGRP32E.lib。


新建\Inc\ProEssentials目录,放置Pegrpapi.h头文件。


新建\bin 目录,放置exe文件。


3.view初始化和析构函数

//view.cpp添加头文件#include Pegrpapi.h;
//view类成员变量HWND m_hPE;

构造函数初始化

CMy000SimpleGraphView::CMy000SimpleGraphView(){m_hPE=NULL;}
CMy000SimpleGraphView::~CMy000SimpleGraphView(){if (m_hPE){PEdestroy(m_hPE);m_hPE = 0;}}

4、添加绘制图表函数

void CMy000SimpleGraphView::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.   RECT rect;   GetClientRect( &rect );   m_hPE = PEcreate(PECONTROL_GRAPH, WS_VISIBLE, &rect, m_hWnd, 1001);   if (m_hPE)    {       // Enable middle mouse dragging //       PEnset(m_hPE, PEP_bMOUSEDRAGGINGX, TRUE);       PEnset(m_hPE, PEP_bMOUSEDRAGGINGY, TRUE);       // Enable Bar Glass Effect //       PEnset(m_hPE, PEP_bBARGLASSEFFECT, TRUE);       // Enable Plotting style gradient and bevel features //       PEnset(m_hPE, PEP_nAREAGRADIENTSTYLE,  PEPGS_RADIAL_BOTTOM_RIGHT);       PEnset(m_hPE, PEP_nAREABEVELSTYLE, PEBS_MEDIUM_SMOOTH);       PEnset(m_hPE, PEP_nSPLINEGRADIENTSTYLE,  PEPGS_RADIAL_BOTTOM_RIGHT);       PEnset(m_hPE, PEP_nSPLINEBEVELSTYLE, PESBS_MEDIUM_SMOOTH);       // 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.0F) + ((float) rand()/RAND_MAX*250) + 700.0F - ((float) (s * 140.0F)) + ((float) rand()/RAND_MAX);               PEvsetcellEx(m_hPE, PEP_faYDATA, s, p, &fY);           }       }       // Set DataShadows to show 3D //       PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);       PEszset(m_hPE, PEP_szMAINTITLE, TEXT("Units Sold per Month"));       PEszset(m_hPE, PEP_szSUBTITLE, TEXT(""));        PEszset(m_hPE, PEP_szYAXISLABEL, TEXT("Units Sold"));       PEszset(m_hPE, PEP_szXAXISLABEL, TEXT("Month"));       PEnset(m_hPE, PEP_bFOCALRECT, FALSE);       PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_AREA);       PEnset(m_hPE, PEP_nGRIDLINECONTROL, PEGLC_BOTH);       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, TEXT("Texas"));       PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 1, TEXT("Florida" ));       PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 2, TEXT("Washington" ));       PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 3, TEXT("California" ));       // point labels //       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 0, TEXT("January" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 1, TEXT("February" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 2, TEXT("March" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 3, TEXT("April" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 4, TEXT("May" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 5, TEXT("June" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 6, TEXT("July" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 7, TEXT("August" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 8, TEXT("September" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 9, TEXT("October" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 10, TEXT("November" ));       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 11, TEXT("December" ));       // subset colors //       DWORD dwArray[4] = { PERGB(128,198,0,0), PERGB(128,0, 198, 198 ), PERGB(128,198,198,0 ), PERGB(128,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_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_nDATAPRECISION, 1);       PEnset(m_hPE, PEP_nGRAPHPLUSTABLE, PEGPT_BOTH);       PEnset(m_hPE, PEP_bMARKDATAPOINTS, TRUE);       PEnset(m_hPE, PEP_nGRIDSTYLE, PEGS_DOT);       // Improves metafile export //       PEnset(m_hPE, PEP_nDPIX, 600);       PEnset(m_hPE, PEP_nDPIY, 600);       PEnset(m_hPE, PEP_nRENDERENGINE, PERE_GDI);//GDI+为PERE_GDIPLUS       // Set Demo's RenderEngine to Gdi Plus VC6.0注释掉下面两句GDI+     //   CMDIFrameWnd* pWnd = (CMDIFrameWnd*) AfxGetApp()->GetMainWnd();    //   pWnd->SendMessage(WM_CHANGE_METAFILE, PEPLAYMETAFILEGDIPLUS );   }}

5、OnDraw中调用绘图函数

void CMy000SimpleGraphView::OnDraw(CDC* pDC){CMy000SimpleGraphDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCreateSimpleGraph();}
最后结果