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

  • Agile development principles have gone from something used only by cutting-edge teams to a mainstream approach used by teams large and small. If you're not using agile methods already though, or if you've only been exposed to agile on small projects here and there, you may wonder if agile can ever work in your environment. Read this eBook to learn the fundamentals of agile and how to increase the productivity of your software teams while enabling them to produce higher-quality solutions that better fulfill …

  • With 81% of employees using their phones at work, companies have stopped asking: "Is corporate data leaking from personal devices?" and started asking: "How do we effectively prevent corporate data from leaking from personal devices?" The answer has not been simple. ZixOne raises the bar on BYOD security by not allowing email data to reside on the device. In addition, Zix allows employees to maintain complete control of their personal device, therefore satisfying privacy demands of valued employees and the …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds