Pie Chart Control

 

Download Source Code

Download Example Project

This control class CPieChartCtrl is derived from CWnd. The purpose is to create a simple 2D pie chart in a dialog. The code is created and compiled with Visual C++ 5.0 SP3 under Windows 98.

How to use

1. Use the MS Visual C++ dialog editor to place a custom control on the dialog, and enter "PIE_CHART_CTRL" as the Class name.

2. Add a CPieChartCtrl class member in the header file

#include "PieChartCtrl.h"
...
CPieChartCtrl m_wndChart;

3. Subclass the class member with the control in InitDialog()

m_wndChart.SubclassDlgItem(IDC_PIECHART1, this); //IDC_PIECHART1 is the control ID

4. Use these functions to edit to chart

// SetTitle(CString) - Set the chart title text
m_wndChart.SetTitle("Chart Title");

// Reset() - Reset the chart and delete all pieces
m_wndChart.Reset();

// AddPiece(COLORREF colorBack, COLORREF colorText, 
//            int nAngle, int strInfo = "");
// Add one piece into the chart
m_wndChart.AddPiece(colorBack, colorText, nAngle, strInfo);

Last updated: 12 August 1998



Comments

  • Simple fix - to actually pass in percentages

    Posted by Legacy on 07/31/2002 12:00am

    Originally posted by: Frank

    BOOL CPieChartCtrl::AddPiece(COLORREF colorBack, COLORREF colorText, int nAngle, const CString& str, bool bAngleIsPercent)
    
    {
    // turn nAngle into what we like - a degree
    if (bAngleIsPercent) // - ex 17%
    nAngle = (360 * nAngle/100);

    ...
    }

    it could also be more ellaborate - taking floats instead of ints and so on...

    Reply
  • Program is good but.........

    Posted by Legacy on 01/22/2002 12:00am

    Originally posted by: Rajesh

    The program is good but instead of taking an angle, there should be some other way of passing data. Because, the program does not deal with angles(degrees) but only with percentages.

    Reply
  • Works fine but ................

    Posted by Legacy on 06/07/2001 12:00am

    Originally posted by: Chokri Oueslati

    It's a good job. Unfortunatly the developer should have spent a little more time and implemented functionality to take both Base and values, the way it is right now is on a degree base.

    Reply
  • 11

    Posted by Legacy on 01/19/2000 12:00am

    Originally posted by: fool kim

    열라깨군...
    

    Reply
  • the app crashed after press return

    Posted by Legacy on 04/04/1999 12:00am

    Originally posted by: Amanda

    in the edit box, press return, then the app disappear.

    Reply
  • It works

    Posted by Legacy on 03/03/1999 12:00am

    Originally posted by: Sharon Fridman

    But There are some problems, especially with color scheme.
    Also for values not converted to degrees (i.e. some non-normalized values - specially double ones) there is sometimes a 1% origional (blue) leftover.
    Thanks for the writetr anyhow.
    To fix, one need to normalize himself to degrees summing to 360.

    Reply
  • It's good; Problem when one item is inserted

    Posted by Legacy on 09/28/1998 12:00am

    Originally posted by: Nikos Papakostas

    It's simple and good. However, when only one item is inserted and angle 
    
    is equal to 360, the background colour is set to the original settings
    (blue) and not to the colour declared in the CPieChartCtrl::AddPiece()
    function.
    From a first look, it seems that if the 2 following lines are inserted
    under the line 135 of the file "PieChartCtrl.cpp", the problem is fixed:

    else if (nCount == 1)
    memDC.Ellipse(m_rectChart);

    The control was tested on a NT 4.0 SP3 machine with VC++ 5.0.


    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Today's agile organizations pose operations teams with a tremendous challenge: to deploy new releases to production immediately after development and testing is completed. To ensure that applications are deployed successfully, an automatic and transparent process is required. We refer to this process as Zero Touch Deployment™. This white paper reviews two approaches to Zero Touch Deployment--a script-based solution and a release automation platform. The article discusses how each can solve the key …

  • On-demand Event Event Date: December 18, 2014 The Internet of Things (IoT) incorporates physical devices into business processes using predictive analytics. While it relies heavily on existing Internet technologies, it differs by including physical devices, specialized protocols, physical analytics, and a unique partner network. To capture the real business value of IoT, the industry must move beyond customized projects to general patterns and platforms. Check out this webcast and join industry experts as …

Most Popular Programming Stories

More for Developers

RSS Feeds