上一个我自编的Chart尚未完善,现在已经完成了自动OnPaint来刷新画面了。
现在我也把它编成自定的控件(Customized Control)。
现在最新的Chart是 1.0.0.2 版本的。
(注:1.0.0.2 版本有许多的更改了。)
在Chart.h里:
//Chart.h
class CChart: public wxControl //以wxControl派生CChart
{
//必须加入以下两行,
DECLARE_DYNAMIC_CLASS(CChart) //定义动态的class
DECLARE_EVENT_TABLE() //定义事件表
.
.
另外,~CChart()得换成private,以避免static/global 的定义,因为wxWidgets软件终止时,窗口(wxWindow)会自动清除子控件,这样会导致~CChart()制动调用两次。为了避免错误的发生,我们只能使用new 来创建CChart物件。
private: //为了不可定义global或static 的类新。
~CChart();
在Chart.cpp里,加入以下的几行:
//Chart.cpp
BEGIN_EVENT_TABLE(CChart, wxControl) //事件表
EVT_PAINT(CChart::OnPaint) //刷新函数
END_EVENT_TABLE()
IMPLEMENT_DYNAMIC_CLASS(CChart, wxControl) //CChart动态物件
使用法:
只需要两个步骤,
第一,创建与初始化,
//ChartDlgMain.cpp
CChart *pChart=new CChart(ChartDlgFrame::ID_CHART1,_T("CHART 1"),_T("Time"),_T("Temperature"));
注意,这里是使用new来创建的。
第二,绘出图表与曲线,OnButton1Click().
至于,OnPaint就不需要代码了,因为CChart::OnPaint()已经处理了。
代码:
|
文件: |
ChartDlgMain(1.0.0.2).zip |
大小: |
20KB |
下载: |
下载 | |
阅读(3258) | 评论(0) | 转发(0) |