demonstrates how to create your first Visual
Studio VS2005 / VS2008 / VS2010 C++ Charting Library implementation. Click here for instructions for Visual Studio 6/ VC6
The ProEssentials DLL has a standard C interface like all Windows system DLLs.
This example is a non-MFC example for reasons of
simplicity. This article teaches the fundamentals that ProEssentials creates an HWND much like the CreateWindow API call. Then the control is utilized similar to any child window within the Windows operating system.
Also see the included ProEssentials7/VC complete MFC example project which replicates our main demo. File PeView.CPP contains all chart related code.
There are notes for MFC throughout this article.
IMPORTANT: For help finding DLL features within our help system, use the Contents Tab at the top-left location, then near the bottom click "ProEssentials Reference", and then "Alphabetic Listing".
When installing ProEssentials, the setup program
installs the ProEssentials DLL (our Dynamically Linkable Charting Library) into the system
directory. It also installs a header file and
import library into the C:\ProEssentials7\VC directory.
The relevant files are:
||ProEssentials Pro DLL
||ProEssentials Pro LIB File
||ProEssentials Standard DLL
||ProEssentials Standard LIB File
||ProEssentials Lite DLL
||ProEssentials Lite LIB File
Note this Walk-Through uses the Pro version.
Substitute the above Standard or Lite Charting Library file as needed.
Creating the Project...
Launch Visual Studio and use the File / New...
menu to launch the [New] project dialog. Within Tree select [Visual C++ - - Win32 ],
select project template [Win32 Project],
and supply a project name [MyFirst] and appropriate project location.
1) Copy "PEGRPAPI.H" and "PEGRP32E.LIB" from the C:\ProEssentials7\VC directory to where the [MyFirst] project
if using Standard or Lite versions,
use "PEGRPSE.LIB" or "PEGRPLE.LIB".
the [Project / Add Exiting Item...] menu
to add "PEGRPAPI.H" and "PEGRP32E.LIB" to the [MyFirst"
NOTE, if Visual Studio asks questions about how to build .LIB files?, just tell Visual Studio to do nothing about building LIB files. Silly question!
The image to the left shows the existing files being added to your project.
the file "myfirst.cpp" and near the top add the lines:
statement adds the ProEssentials header file which contains constants
and function declarations.
variable hPE is
used to store the Window's handle for the ProEssentials control.
Note: Within an MFC application, you'll generally add the include
statement to the view class's ".cpp" file and add the variable m_hPE to the view class's ".h" file
as a member variable of the view's class.
4) Within the InitInstance function, add one line of code
to initialize hPE to NULL. This is needed because
we'll be adding code into the WM_SIZE and WM_DESTROY switches which assume a non-NULL hPE represents a ProEssentials
control has been constructed.
5) Next, within the WndProc function, add the lines:
int s, p;
These will be needed
within the WM_CREATE and WM_SIZE switches.
hPE = PEcreate(PECONTROL_GRAPH,
0, &r, hWnd, 1000);
for (s=0; s<2; s++)
for (p=0; p<10; p++)
= (rand() % 10) + (rand() % 100) / 100.0F;
PEP_faYDATA, s, p, &f);
PEnset(hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_NO_BORDER);
MoveWindow(hPE, 0, 0, r.right, r.bottom, FALSE);
6) Next, we add handlers
for the WM_CREATE, WM_SIZE, and WM_ERASEBKGNDmessage
the ProEssentials creation code. The ProEssentials function PEcreate is similar to the Windows CreateWindow
function, and if successful, returns a Windows handle
which is stored in hPE.
PEnset is a ProEssentials
function that sets 32 bit type properties such as INTEGER,
BOOL and HANDLE.
Next a nested for loop passes data via PEvsetcellEx and the property YData. Note
variable f is type float and
this is important because PEvsetcellEx works by reading
data at a void pointer's location and memory at this
location must be of the type expected.
Next, PEszset is the ProEssentials
function used to set textual type properties.
PEvsetcell is then used to set the Subset Legend text for both
PEnset is then used
to set various properties controlling visual aspects.
PEreinitialize and PEresetimage tell
ProEssentials you're done setting properties.
The code in the WM_SIZE message
handler causes the ProEssentials control to always consume
the entire Windows client area.
Consuming the WM_ERASEBKGND message
prevents the control from flashing as the parent repaints itself.
7) The code in the WM_DESTROY message
handler destroys the ProEssentials
control and frees resources via PEdestroy.
hPE = 0;
Use Visual C++'s
Build / Build myfirst.exe menu (short cut F7) and then
Build / Execute myfirst.exe (short cut Ctrl+F5) and
you'll see the resulting Window to the left.
you've just completed your first Visual C++ / ProEssentials
This example is very simple and you'll likely set
other properties such as:
PointLabels which will replace the "1,2,3..." along
SubsetLineTypes which controls line styles.
SubsetColors which controls line colors.
PlottingMethod which controls the type of chart created, Line,
Bar, Area, Point, etc.
MFC User's Note:
installs an MFC example [VC6 Example Project] located
via the Start Menu / All Programs / ProEssentials v7.
This project will load into any version of Visual Studio. Allow the project to automatically convert as needed.Within an MFC implementation, you'll generally add a
m_hPE member variable inside the View
Class's declaration and then ProEssentials
creation code within the View Class's OnCreate handler after the base class
call. You'll use the OnDestroy
message handler to call PEdestroy. Within our included
ProEssentials7/VC example project, look for "PeView.h" for the m_hPE
declaration and "PeView.cpp" for the implementation.
Complete online technical reference to the ProEssentials
product. The .NET Reference is the best mechanism
to navigate the large quantity of properties and features.
Walk-Throughs of graphing in VB.NET, C#.NET, ASP, VC,
VB6, and Delphi get you started quickly.
more about our Graphing Library, see Chapter 5