关于TeeChart画图的有关问题
关于TeeChart画图的问题
各位好!
我用TeeChart控件画图,基本思想是:接收到客户端发送过来的数据后,直接进行画图。在一个对话框中添加了该控件和一个按钮,按钮单击响应函数OnPaint(),另外为对话框关联消息WM_TIMER,响应函数为OnTimer(UINT nIDEvent),我的做法是使用定时器,即:
void A::OnPaint() //对话框所关联的是A类
{
SetTimer(1,100,NULL);
}
void A::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1)
{
m_ctrlChart.Series(0).Clear();
char strTime1[25];
int t=0;
while(CPublic::X[t]) //CPublic::X[t]中就是接收到的数据
{
max=CPublic::X[t];
itoa(t,strTime1,10);
m_ctrlChart.Series(0).AddXY(t,CPublic::X[t],strTime1,RGB(255,0,0));
t++;
}
}
}
我这么操作,发现数据能够实时画出来了,但是,在为TeeChart控件关联OnMouseMove消息后,在函数中添加
void A::OnOnMouseMoveTchart1(long Shift, long X, long Y)
{ int mPoint = -1;
double xValue = m_ctrlChart.Series(0).XScreenToValue(X) ; //+ 0.5
mPoint = (int)(xValue);
if(mPoint < 0)
{
return ;
}
CValueList xList = m_ctrlChart.Series(0).GetXValues();
CValueList yList = m_ctrlChart.Series(0).GetYValues();
CString strXLabel = m_ctrlChart.Series(0).GetPointLabel(mPoint);
int dYLabel = (int)yList.GetValue(mPoint);
CToolList tlist = m_ctrlChart.GetTools();
CTools tools = tlist.GetItems(1);
CAnnotationTool anntool = tools.GetAsAnnotation();
CString strTopNote;
strTopNote.Format("Time: %ss Temperature: %3d ℃",strXLabel, dYLabel);
anntool.SetText(strTopNote);
}
之后,发现鼠标移动后,还是没有显示相应的坐标,标题栏也没有写成格式为“Time: %ss Temperature: %3d ℃”
请问各位高手,这是什么原因?是不是因为设置了定时器的关系?(我之前也画过图,用随机数画图,也是这么操作,发现能随着鼠标移动,显示点)
------解决方案--------------------
无人问津啊,不过问题已经解决了
各位好!
我用TeeChart控件画图,基本思想是:接收到客户端发送过来的数据后,直接进行画图。在一个对话框中添加了该控件和一个按钮,按钮单击响应函数OnPaint(),另外为对话框关联消息WM_TIMER,响应函数为OnTimer(UINT nIDEvent),我的做法是使用定时器,即:
void A::OnPaint() //对话框所关联的是A类
{
SetTimer(1,100,NULL);
}
void A::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1)
{
m_ctrlChart.Series(0).Clear();
char strTime1[25];
int t=0;
while(CPublic::X[t]) //CPublic::X[t]中就是接收到的数据
{
max=CPublic::X[t];
itoa(t,strTime1,10);
m_ctrlChart.Series(0).AddXY(t,CPublic::X[t],strTime1,RGB(255,0,0));
t++;
}
}
}
我这么操作,发现数据能够实时画出来了,但是,在为TeeChart控件关联OnMouseMove消息后,在函数中添加
void A::OnOnMouseMoveTchart1(long Shift, long X, long Y)
{ int mPoint = -1;
double xValue = m_ctrlChart.Series(0).XScreenToValue(X) ; //+ 0.5
mPoint = (int)(xValue);
if(mPoint < 0)
{
return ;
}
CValueList xList = m_ctrlChart.Series(0).GetXValues();
CValueList yList = m_ctrlChart.Series(0).GetYValues();
CString strXLabel = m_ctrlChart.Series(0).GetPointLabel(mPoint);
int dYLabel = (int)yList.GetValue(mPoint);
CToolList tlist = m_ctrlChart.GetTools();
CTools tools = tlist.GetItems(1);
CAnnotationTool anntool = tools.GetAsAnnotation();
CString strTopNote;
strTopNote.Format("Time: %ss Temperature: %3d ℃",strXLabel, dYLabel);
anntool.SetText(strTopNote);
}
之后,发现鼠标移动后,还是没有显示相应的坐标,标题栏也没有写成格式为“Time: %ss Temperature: %3d ℃”
请问各位高手,这是什么原因?是不是因为设置了定时器的关系?(我之前也画过图,用随机数画图,也是这么操作,发现能随着鼠标移动,显示点)
------解决方案--------------------
无人问津啊,不过问题已经解决了