Click here to Skip to main content
15,883,870 members
Articles / Desktop Programming / MFC
Article

Windows Task Manager Style History Plot

Rate me:
Please Sign up or sign in to vote.
2.50/5 (7 votes)
24 Nov 2007CPOL1 min read 35.5K   1.2K   37   3
Realtime plotting using Windows Task Manager style.

Screenshot - WinTaskManagerHistoryPlotLike.png

Introduction

While working with a Process Control System, I needed to plot various output variables in real time. As Windows Task Manager History is very elegant to me, it has been my inspiration, and I added zooming capability and tooltips message to make it fancier.

Background

I want to give credits to article authors for their articles I used to accomplish this work.

Using the Code

The main class GraphWnd is derived from CWnd so that it can have a standard MFC control signature.

class GraphWnd : public CWnd

You have to plan ahead how many parameters you want to plot and choose their colors on the plots by adding different colors from a predefined enum into a vector while being passed to a GraphWnd class construction.

enum eColor     {
         SOLID_RED,
         LIGHT_RED,
         SOLID_YELLOW,
         LIGHT_YELLOW,
         SOLID_GREEN,
         LIGHT_GREEN,
         SOLID_BLUE,
         LIGHT_BLUE,
         SOLID_BLACK,
         LIGHT_BLACK,
         SOLID_MAGENTA,
         LIGHT_MAGENTA,
         SOLID_CYAN,
         LIGHT_CYAN,
         SOLID_WHITE};

...

GraphWnd(CRect rect,          //Plotting Control location

         CWnd* parent,        //parent control

         vector<ecolor> color)//color and number of parameters to be plotted

The parameters plotting is done through the UpdateGraphe method.

void UpdateGraphe(GraphData<double> data,
        double timeUnit, //the grid width in pixel on X axis

        double valueUnit,//the grid height in pixel on Y axis

        double minValue, //the minimum value expected on Y axis

        double maxValue, //the maximum value expected on Y axis

        string message)  //the tooltip message
  • The structure GraphData<t> data is used to handle the display of as many as parameters you wish.
  • template<T> struct GraphData
    {
        std::vector<T> d;
    };
    

    The plot axis are time axes as X axis and values axis as Y axis.

  • double timeUnit is the grid width in pixel on the X axis.
  • double valueUnit is the grid height in pixel on the Y axis.
  • double minValue is the minimum value expected on the Y axis.
  • double maxValue is the maximum value expected on the Y axis.
  • string message is a tooltip message.

That's all, folks. Please vote after using my article.

History

  • 25-11-2007
    • Original article.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Engineer
Canada Canada
Just programming

Comments and Discussions

 
GeneralMy vote of 1 Pin
jackbowman18-May-09 15:19
jackbowman18-May-09 15:19 
GeneralRight Margin Runoff Pin
Jeffrey Walton24-Nov-07 23:27
Jeffrey Walton24-Nov-07 23:27 
GeneralRe: Right Margin Runoff Pin
Frederic Ntawiniga25-Nov-07 5:32
Frederic Ntawiniga25-Nov-07 5:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.