iocomp iPlot使用说明24 Plot Pack Events绘图包事件

关于iocomp IPlot说明资源的下载(不需要金币!):
iocomp iPlot使用说明
本系列博客均基于此说明展开。
本节内容对应资源P126-P158.

MFC是基于事件响应机制的,就像按钮有单击事件、双击事件等。iPlot控件也有很多事件,本章就是对这些事件进行详细讲解。首先,我们先看一下如何添加控件事件函数:
添加控件之后右键,点击添加事件处理程序,在弹出的对话框中点击事件、添加编辑即可。在这里插入图片描述
iPlot控件有下面这些事件,接下来我们详细讲解:
在这里插入图片描述
OnClick:当用户在绘图控件上单击鼠标按钮时,会触发此事件。

void CEventTestingManualView::OnOnClickIplotx1()
{
m_ValueEdit = "OnClick";
UpdateData(FALSE);
}

OnDblClick:当用户在绘图控件上双击鼠标按钮时,会触发此事件。

void CEventTestingManualView::OnOnDblClickIplotx1()
{
m_ValueEdit = "OnDoubleClick";
UpdateData(FALSE);
}

OnMouseDown:当用户按下鼠标按钮且鼠标光标位于绘图组件上时,会触发此事件。

VoidOnOnMouseDownIplotx1(short Button, short Shift,long X, long Y)
{
CString FWhichKey;
if (Shift == 0) FWhichKey = "Mouse was pressed";
if (Shift == 1) FWhichKey = "Shift and Mouse were pressed";
if (Shift == 2) FWhichKey = "Alt and Mouse were pressed";
if (Shift == 4) FWhichKey = "Control and Mouse were pressed";
m_ValueEdit.Format("%s%s%d%s%d%s", FWhichKey, " MouseX=", X, "MouseY=", Y, " of the Component");
UpdateData(FALSE);
}

上例可以看出,不仅可以触发鼠标点击事件,还能检测到同时按下什么按钮,以及点击控件的位置。

OnMouseMove:当用户将鼠标光标移到绘图组件上时,会发生此事件。

void::OnOnMouseMoveIplotx1(short Shift, long X, long Y)
{
CString FWhichKey;
if (Shift == 0) FWhichKey = "Mouse is Moving";
if (Shift == 1) FWhichKey = "Shift was pressed and Mouse is Moving";
if (Shift == 2) FWhichKey = "Alt was pressed and Mouse is Moving";
if (Shift == 4) FWhichKey = "Control was pressed and Mouse is Moving";
m_ValueEdit.Format("%s%s%d%s%d%s", FWhichKey, " MouseX=", X, "MouseY=", Y, " of the Component");
UpdateData(FALSE);
}

OnMouseUp:当用户释放鼠标按钮且鼠标光标位于绘图组件上时,会发生此事件。

void::OnOnMouseUpIplotx1(short Button, short Shift, long X, long Y)
{
CString FWhichKey;
if (Button == 1) FWhichKey = "Left Button of the Mouse is released";
if (Button == 2) FWhichKey = "Right Button of the Mouse is released";
if (Button == 4) FWhichKey = "Middle Button of the Mouse is released";
m_ValueEdit.Format("%s%s%d%s%d%s", FWhichKey, " at MouseX=", X, " MouseY=",Y, " of the Component");
UpdateData(FALSE);
}

可以看出,鼠标释放触发事件时,可以检测到释放的是哪个鼠标按钮。

OnKeyDown:当用户按下键盘上的键时触发此事件。

void::OnOnKeyDownIplotx1(short FAR* Key, short Shift)
{
CString FWhichKey;
if (Shift == 1) FWhichKey = "Shift and ";
if (Shift == 2) FWhichKey = "Alt and ";
if (Shift == 4) FWhichKey = "Control and ";
m_ValueEdit.Format("%s%s%s", FWhichKey, Key, " Keys were Pressed");
UpdateData(FALSE);
}

可以看出,按的键传给了key,我们可以在实际编程中通过判断key来分别触发不同事件。

OnKeyPress:当用户按键盘上的键时触发此事件。

void::OnOnKeyPressIplotx1(short FAR* Key)
{
m_ValueEdit.Format("%s%s", Key, " Key were Pressed");
UpdateData(FALSE);
}

OnKeyUp:当用户按键盘上的键时触发此事件。

void::OnOnKeyUpIplotx1(short FAR* Key, short Shift)
{
CString FWhichKey;
if (Shift == 1) FWhichKey = "Shift and ";
if (Shift == 2) FWhichKey = "Alt and ";
if (Shift == 4) FWhichKey = "Control and ";
m_ValueEdit.Format("%s%s%s", FWhichKey, Key, " Keys were Released");
UpdateData(FALSE);
}

OnClickAnnotation:每当应用程序用户单击单个注释对象时,就会发生此事件。将传回批注对象的索引,您可以使用该索引访问所单击批注的属性和方法。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

OnClickAnnotation(long Index)
{
m_ValueEdit = m_iPlotX1.GetAnnotation(Index).GetX();
UpdateData(FALSE);
}

OnClickChannel:当应用程序最终用户单击图例中的单个通道对象时,会发生此事件。单击通道后,使用OnClickChannel执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。此函数返回点击通道的索引。

void::OnOnClickChannelIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetChannel (Index).GetName(), " Has been Clicked");
UpdateData(FALSE);
}

OnClickDataCursor:当应用程序最终用户单击单个DataCursor对象时,会发生此事件。使用OnClickDataCursor在单击DataCursor后执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnClickDataCursorIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetDataCursor (Index).GetName(), "Has been Clicked");
UpdateData(FALSE);
}

OnClickDataPoint:每当应用程序用户单击单个数据点对象时,就会发生此事件。将传回通道索引和数据点索引,您可以使用该通道索引访问通道的属性和方法,并确定单击的数据点的X和Y坐标。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

OnClickDataPoint(long ChannelIndex, long DataIndex)
{
m_ValueEdit =
m_iPlotX1.GetChannel(ChannelIndex).GetDataX(DataIndex);
UpdateData(FALSE);
}

OnClickDataView:应用程序最终用户单击DataView对象时发生此事件。单击数据视图后,使用OnClickDataView执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnClickDataViewIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetDataView(Index).GetName(), " Has been Clicked");
UpdateData(FALSE);
}

OnClickLegend:应用程序最终用户单击图例对象时发生此事件。单击图例后,使用OnClickLegend执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnClickLegendIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetLegend(Index).GetName(), " Has been Clicked");
UpdateData(FALSE);
}

OnClickLimit:应用程序最终用户单击Limit对象时发生此事件。单击限制后,使用OnClickLimit执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnClickLimitIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetLimit(Index).GetName()," Has been Clicked");
UpdateData(FALSE);
}

OnClickXAxis:当应用程序最终用户单击XAxis对象时,会发生此事件。使用OnClickXAxis在单击XAxis后执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnClickXAxisIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetXAxis(Index).GetName()," Has been Clicked");
UpdateData(FALSE);
}

OnClickYAxis:当应用程序最终用户单击YAxis对象时,会发生此事件。使用OnClickYAxis在单击YAxis后执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnClickYAxisIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetYAxis(Index).GetName()," Has been Clicked");
UpdateData(FALSE);
}

OnDblClickAnnotation:每当应用程序用户双击单个注释对象时,就会发生此事件。注释对象的索引被传回,您可以使用该索引访问双击的注释的属性和方法。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnDblClickAnnotationIplotx1(long Index)
{
m_ValueEdit.Format("%s%f", "Double Clicked Annotation X-Coordinate : ", m_iPlotX1.GetAnnotation(Index).GetX());
UpdateData(FALSE);
}

OnDblClickChannel:当应用程序最终用户双击图例中的单个通道对象时,会发生此事件。双击频道后,使用OnDblClickChannel执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnDblClickChannelIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetChannel (Index).GetName(), " Has been Double Clicked");
UpdateData(FALSE);
}

OnDblClickDataCursor:当应用程序最终用户双击单个DataCursor对象时,会发生此事件。双击数据游标后,使用OnDblClickDataCursor执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnDblClickDataCursorIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetDataCursor(Index).GetName()," Has been Double Clicked");
UpdateData(FALSE);
}

OnDblClickDataPoint:每当应用程序用户双击单个数据点对象时,就会发生此事件。将传回通道索引和数据点索引,您可以使用该通道索引访问通道的属性和方法,并确定双击的数据点的X和Y坐标。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnDblClickDataPointIplotx1(long ChannelIndex, long DataIndex)
{
m_ValueEdit.Format("%s%f%s", "The X Coordinate is ", m_iPlotX1.GetChannel (ChannelIndex).GetDataX(DataIndex), " and Double Clicked");
UpdateData(FALSE);
}

OnDblClickDataView:应用程序最终用户双击DataView对象时发生此事件。双击数据视图后,使用OnDblClickDataView执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnDblClickDataViewIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetDataView(Index). GetName(), " Has been Double Clicked");
UpdateData(FALSE);
}

OnDblClickLegend:应用程序最终用户双击图例对象时发生此事件。双击图例后,使用OnDblClickLegend执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnDblClickLegendIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetLegend(Index).GetName(), " Has been Double Clicked");
UpdateData(FALSE);
}

OnDblClickLimit:应用程序最终用户双击Limit对象时发生此事件。双击限制后,使用OnDblClickLimit执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnDblClickLimitIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetLimit(Index).GetName()," Has been Double Clicked");
UpdateData(FALSE);
}

OnDblClickXAxis:应用程序最终用户双击XAxis对象时发生此事件。双击XAxis后,使用OnDblClickXAxis执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnDblClickXAxisIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetXAxis(Index).GetName(), " Has been Double Clicked");
UpdateData(FALSE);
}

OnDblClickYAxis:当应用程序最终用户双击YAxis对象时,会发生此事件。使用OnDblClickYAxis在双击YAxis后执行操作。注意:标准的OnClick、OnMouseDown和OnMouseUp事件仍然会触发。

void::OnOnDblClickYAxisIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetYAxis(Index).GetName()," Has been Double Clicked");
UpdateData(FALSE);
}

OnXAxisCustomizeLabel:此事件发生在控件上绘制每个X轴主记号标签之前。使用此事件可修改主刻度标签。此事件将为每个标签触发,Index参数指定要绘制的标签。修改ALabel参数以更改标签。ALabel参数通过引用传递,以便您可以根据需要使用自己的文本修改标签。

void::OnXAxisCustomizeLabel_m_iPlotX1(long Index, double Value, BSTR FAR* ALabel)
{
if (Value == 0) *ALabel = ::SysAllocString(L"Zero" );
if (Value == 2) *ALabel = ::SysAllocString(L"Two" );
if (Value == 4) *ALabel = ::SysAllocString(L"Four" );
if (Value == 6) *ALabel = ::SysAllocString(L"Six" );
if (Value == 8) *ALabel = ::SysAllocString(L"Eight");
if (Value == 10) *ALabel = ::SysAllocString(L"Ten" );
}

OnXAxisMinChange:X轴的“最小”属性更改时发生此事件。传递的索引值是具有min属性更改的X轴对象的索引。OldValue是X轴的前一个最小值,NewValue是引发此事件的X轴的新最小值。

void::OnOnXAxisMinChangeIplotx1(long Index, double OldValue, double NewValue)
{
m_ValueEdit = NewValue - OldValue;
UpdateData(FALSE);
}

OnXAxisMinSpanChange:X轴的“跨度”属性更改时发生此事件。传递的索引值是具有min属性更改的X轴对象的索引。OldValue是X轴的上一个跨度值,NewValue是引发此事件的X轴的新跨度。

void::OnOnXAxisMinSpanChangeIplotx1(long Index, double OldMin, double OldSpan, double NewMin, double NewSpan)
{
m_ValueEdit.Format("%s%s%.1f%s%.1f%s%.1f%s%.1f", m_iPlotX1.GetXAxis(Index).GetName(), " OldMin:" , OldMin, " OldSpan:", OldSpan, "
NewMin: ", NewMin, " NewSpan:", NewSpan);
UpdateData(FALSE);
}

OnXAxisSpanChange:X轴的“跨度”属性更改时发生此事件。传递的索引值是具有min属性更改的X轴对象的索引。OldValue是X轴的上一个跨度值,NewValue是引发此事件的X轴的新跨度。

void::OnOnXAxisMinChangeIplotx1(long Index, double OldValue, double NewValue)
{
m_ValueEdit = NewValue - OldValue;
UpdateData(FALSE);
}

OnYAxisCustomizeLabel:此事件发生在控件上绘制每个Y轴主记号标签之前。使用此事件可修改主刻度标签。此事件将为每个标签触发,Index参数指定要绘制的标签。修改ALabel参数以更改标签。ALabel参数通过引用传递,以便您可以根据需要使用自己的文本修改标签。

void::OnYAxisCustomizeLabel_m_iPlotX1(long Index, double Value, BSTR FAR* ALabel)
{
if (Value == 0) *ALabel = ::SysAllocString(L"Zero" );
if (Value == 2) *ALabel = ::SysAllocString(L"Two" );
if (Value == 4) *ALabel = ::SysAllocString(L"Four" );
if (Value == 6) *ALabel = ::SysAllocString(L"Six" );
if (Value == 8) *ALabel = ::SysAllocString(L"Eight");
if (Value == 10) *ALabel = ::SysAllocString(L"Ten" );
}

OnYAxisMinChange:Y轴的“最小”属性更改时发生此事件。传递的索引值是具有最小属性更改的Y轴对象的索引。OldValue是Y轴的上一个最小值,NewValue是导致此事件触发的Y轴的新最小值。

void::OnOnYAxisMinChangeIplotx1(long Index, double OldValue, double NewValue)
{
m_ValueEdit = NewValue - OldValue;
UpdateData(FALSE);
}

OnYAxisMinSpanChange:Y轴的“跨度”属性更改时发生此事件。传递的索引值是具有最小属性更改的Y轴对象的索引。OldValue是Y轴的上一个跨度值,NewValue是引发此事件的Y轴的新跨度。

void::OnOnYAxisMinSpanChangeIplotx1(long Index, double OldMin,double OldSpan, double NewMin, double NewSpan)
{
m_ValueEdit.Format("%s%s%.1f%s%.1f%s%.1f%s%.1f", m_iPlotX1.GetYAxis(Index).GetName(), " OldMin:" , OldMin, " OldSpan:" , OldSpan, "
NewMin:", NewMin, " NewSpan:", NewSpan);
UpdateData(FALSE);
}

OnYAxisSpanChange:Y轴的“跨度”属性更改时发生此事件。传递的索引值是具有最小属性更改的Y轴对象的索引。OldValue是Y轴的上一个跨度值,NewValue是引发此事件的Y轴的新跨度。

void::OnOnYAxisSpanChangeIplotx1(long Index, double OldValue, double NewValue)
{
m_ValueEdit = OldValue - NewValue;
UpdateData(FALSE);
}

OnDataCursorChange:当特定数据游标的Pointer1Position或Pointer2Position属性更改时,会发生此事件。

void::OnOnDataCursorChangeIplotx1(long Index)
{
UpdateData(TRUE);
m_ValueEdit = Index;
UpdateData(FALSE);
}

OnDataCursorCustomizeHint:此事件发生在绘制每个主要记号标签之前,并允许修改标签。使用OnDataCursorCustomizeHint修改数据光标提示。

void::OnOnDataCursorCustomizeHintIplotx1(long Index, BSTR FAR* AText)
{
double XValue;
double YValue;
CString AString;
XValue = m_iPlotX1.GetDataCursor(Index).GetValueX();
YValue = m_iPlotX1.GetDataCursor(Index).GetValueY();
AString.Format("%s%.2f%s%.2f", "X:" , XValue, " Y:" , YValue);
*AText = AString.AllocSysString();
UpdateData(FALSE);
}

OnLimitLine1PositionChange:Limit对象的Line1Position属性更改时发生此事件。传递的索引值是Line1Position属性已更改的Limit对象的索引。OldValue是限制线的前一个位置,NewValue是导致此事件触发的限制线的新位置。这些值是按值传递的,不能更改。使用实际限制的属性进行修改。

void::OnOnLimitLine1PositionChangeIplotx1(long Index, double OldValue, double NewValue)
{
m_ValueEdit = NewValue - OldValue;
UpdateData(FALSE);
}

OnLimitLine2PositionChange:Limit对象的Line2Position属性更改时发生此事件。传递的索引值是已更改Line2Position属性的Limit对象的索引。OldValue是限制线的前一个位置,NewValue是导致此事件触发的限制线的新位置。这些值是按值传递的,不能更改。使用实际限制的属性进行修改。

void::OnOnLimitLine2PositionChangeIplotx1(long Index, double OldValue, double NewValue)
{
m_ValueEdit = NewValue - OldValue;
UpdateData(FALSE);
}

OnGotFocusAnnotation:在注释对象获得焦点时触发此事件。传递的索引值是获得焦点的对象的索引。

void::OnOnGotFocusAnnotationIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetAnnotation(Index).GetName(), " Got Focus");
UpdateData(FALSE);
}

OnGotFocusChannel:使用OnGotFocusChannel指定通道对象获得焦点时要执行的操作。传递的索引值是获得焦点的对象的索引。

void::OnOnGotFocusChannelIplotx1(long Index)
{
m_ValueEdit = m_iPlotX1.GetChannel(Index).GetName();
UpdateData(FALSE);
}

OnGotFocusDataCursor:使用OnGotFocusDataCursor指定当DataCursor对象获得焦点时要执行的操作。传递的索引值是获得焦点的对象的索引。

void::OnOnGotFocusDataCursorIplotx1(long Index)
{
m_ValueEdit = m_iPlotX1.GetChannel(Index).GetName() + " DataCursor";
UpdateData(FALSE);
}

OnGotFocusDataView:使用OnGotFocusDataView指定当DataView对象获得焦点时要执行的操作。传递的索引值是获得焦点的对象的索引。注意:当前只支持一个DataView,因此索引将始终为0。

void::OnOnGotFocusDataViewIplotx1(long Index)
{
m_ValueEdit = "DataView Got Focus";
UpdateData(FALSE);
}

OnGotFocusLegend:使用OnGotFocusLegend指定当Legend对象获得焦点时要执行的操作。传递的索引值是获得焦点的对象的索引。注意:当前只支持一个图例,因此索引将始终为0。

void::OnOnGotFocusLegendIplotx1(long Index)
{
m_ValueEdit = "Legend Got Focus";
UpdateData(FALSE);
}

OnGotFocusXAxis:使用OnGotFocusXAxis指定X轴对象获得焦点时要执行的操作。传递的索引值是获得焦点的对象的索引。

void::OnOnGotFocusXAxisIplotx1(long Index)
{
m_ValueEdit = m_iPlotX1.GetXAxis(Index).GetName() + " GotFocus";
UpdateData(FALSE);
}

OnGotFocusYAxis:使用OnGotFocusYAxis指定Y轴对象获得焦点时要执行的操作。传递的索引值是获得焦点的对象的索引。

void::OnOnGotFocusYAxisIplotx1(long Index)
{
m_ValueEdit = m_iPlotX1.GetYAxis(Index).GetName() + " GotFocus";
UpdateData(FALSE);
}

OnLostFocusAnnotation:OnLostFocusAnnotation在注释对象失去焦点时发生。使用OnLostFocusAnnotation指定注释对象失去焦点时要执行的操作。传递的索引值是失去焦点的对象的索引。

void::OnOnLostFocusAnnotationIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetAnnotation (Index).GetName(), " Has Lost Focus");
UpdateData(FALSE);
}

OnLostFocusChannel:使用OnLostFocusChannel指定通道对象失去焦点时要执行的操作。传递的索引值是失去焦点的对象的索引。

void::OnOnLostFocusChannelIplotx1(long Index)
{
m_ValueEdit = m_iPlotX1.GetChannel(Index).GetName() + " Has Lost Focus";
UpdateData(FALSE);
}

OnLostFocusDataCursor:使用OnLostFocusDataCursor指定当DataCursor对象获得焦点时要执行的操作。传递的索引值是失去焦点的对象的索引。

void::OnOnLostFocusDataCursorIplotx1(long Index)
{
m_ValueEdit = "Data" + m_iPlotX1.GetDataCursor(Index).GetName() + " Lost Focus";
UpdateData(FALSE);
}

OnLostFocusDataView:使用OnLostFocusDataView指定当DataView对象失去焦点时要执行的操作。传递的索引值是失去焦点的对象的索引。注意:当前只支持一个DataView,因此索引将始终为0。

void::OnOnLostFocusDataViewIplotx1(long Index)
{
m_ValueEdit = m_iPlotX1.GetDataView(Index).GetName() + " Lost Focus";
UpdateData(FALSE);
}

OnLostFocusLegend:使用OnLostFocusLegend指定当Legend对象失去焦点时要执行的操作。传递的索引值是失去焦点的对象的索引。注意:当前只支持一个图例,因此索引将始终为0。

void::OnOnLostFocusLegendIplotx1(long Index)
{
m_ValueEdit = m_iPlotX1.GetLegend(Index).GetName() + " Lost Focus";
UpdateData(FALSE);
}

OnLostFocusXAxis:使用OnLostFocusXAxis指定X轴对象失去焦点时要执行的操作。传递的索引值是失去焦点的对象的索引。

void::OnOnLostFocusXAxisIplotx1(long Index)
{
m_ValueEdit = m_iPlotX1.GetXAxis(Index).GetName() + " Lost Focus";
UpdateData(FALSE);
}

OnLostFocusYAxis:使用OnLostFocusYAxis指定当Y轴对象失去焦点时要执行的操作。传递的索引值是失去焦点的对象的索引。

void::OnOnLostFocusYAxisIplotx1(long Index)
{
m_ValueEdit = m_iPlotX1.GetYAxis(Index).GetName() + " Lost Focus";
UpdateData(FALSE);
}

OnPopUpMenuAnnotation:在弹出菜单或上下文相关菜单即将在注释对象上打开时触发此事件。使用OnPopupMenuAnnotation指定在注释对象上打开上下文相关菜单(即右键单击菜单)时要执行的操作。

void::OnOnPopupMenuAnnotationIplotx1(long Index, BOOL FAR* Cancel, long ScreenX, long ScreenY)
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MYPOPUPMENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, ScreenX, ScreenY, AfxGetMainWnd());
*Cancel = TRUE;
}

OnPopUpMenuChannel:当通道对象上的弹出菜单或上下文相关菜单即将打开时,将发生Use OnPopUpMenuChannel。使用OnPopupMenuChannel指定在通道对象上打开上下文相关菜单(即右键单击菜单)时要执行的操作。

void::OnOnPopupMenuChannelIplotx1(long Index, BOOL FAR* Cancel, long ScreenX, long ScreenY)
{
CMenu menu;
m_ValueEdit.Format("%s%s", m_iPlotX1.GetChannel(Index).GetName(), " PopUp Menu is Selected");
UpdateData(FALSE);
VERIFY(menu.LoadMenu(IDR_MYPOPUPMENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, ScreenX, ScreenY,AfxGetMainWnd());
*Cancel = TRUE;
}

OnPopUpMenuDataCursor:在DataCursor对象的弹出菜单或上下文相关菜单即将打开时触发此事件。使用OnPopupMenuDataCursor指定每当要在DataCursor对象上打开上下文相关菜单(即右键单击菜单)时要执行的操作。

void::OnOnPopupMenuDataCursorIplotx1(long Index, BOOL FAR* Cancel, long ScreenX,long ScreenY)
{
CMenu menu;
m_ValueEdit.Format("%s%s", m_iPlotX1.GetChannel(Index).GetName(), " DataCursorPopUp Menu is Selected");
UpdateData(FALSE);
VERIFY(menu.LoadMenu(IDR_MYPOPUPMENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, ScreenX, ScreenY, AfxGetMainWnd());
*Cancel = TRUE;
}

OnPopUpMenuDataView:将要在DataView对象上打开弹出菜单或上下文相关菜单时,将发生OnPopUpMenuDataView。使用OnPopupMenuDataView指定每当要在DataView对象上打开上下文相关菜单(即右键单击菜单)时要执行的操作。

Visual C++:
void::OnOnPopupMenuDataViewIplotx1(long Index, BOOL FAR* Cancel, long ScreenX, long ScreenY)
{
CMenu menu;
UpdateData(FALSE);
VERIFY(menu.LoadMenu(IDR_MYPOPUPMENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, ScreenX, ScreenY, AfxGetMainWnd());
*Cancel = TRUE;
}

OnPopUpMenuLegend:在图例对象的弹出菜单或上下文相关菜单即将打开时发生。使用OnPopupMenuLegend指定在图例对象上打开上下文相关菜单(即右键单击菜单)时要执行的操作。

void::OnOnPopupMenuLegendIplotx1(long Index, BOOL FAR* Cancel, long ScreenX, long ScreenY)
{
CMenu menu;
UpdateData(FALSE);
VERIFY(menu.LoadMenu(IDR_MYPOPUPMENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, ScreenX, ScreenY, AfxGetMainWnd());
*Cancel = TRUE;
}

OnPopUpMenuLimit:在Limit对象的弹出菜单或上下文相关菜单即将打开时发生。使用OnPopupMenuLimit指定要在Limit对象上打开上下文相关菜单(即右键单击菜单)时执行的操作。

void::OnOnPopupMenuLimitIplotx1(long Index, BOOL FAR* Cancel, long ScreenX, long ScreenY)
{
CMenu menu;
m_ValueEdit.Format("%s%s", m_iPlotX1.GetLimit(Index).GetName()," PopUp Menu is Selected");
UpdateData(FALSE);
VERIFY(menu.LoadMenu(IDR_MYPOPUPMENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, ScreenX, ScreenY, AfxGetMainWnd());
*Cancel = TRUE;
}

OnPopUpMenuXAxis:当弹出菜单或上下文相关菜单即将在X轴对象上打开时,将发生Use OnPopUpMenuXAxis。使用OnPopupMenuXAxis可以指定要在XAxis对象上打开上下文相关菜单(即右键单击菜单)时执行的操作。

void::OnOnPopupMenuXAxisIplotx1(long Index, BOOL FAR* Cancel, long ScreenX, long ScreenY)
{
CMenu menu;
m_ValueEdit.Format("%s%s", m_iPlotX1.GetXAxis(Index).GetName()," PopUp Menu is Selected");
UpdateData(FALSE);
VERIFY(menu.LoadMenu(IDR_MYPOPUPMENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, ScreenX, ScreenY, AfxGetMainWnd());
*Cancel = TRUE;
}

OnPopUpMenuYAxis:当弹出菜单或上下文相关菜单即将在Y轴对象上打开时,将发生OnPopUpMenuYAxis。使用onPopupMenuAxis指定在YAxis对象上打开上下文相关菜单(即右键单击菜单)时要执行的操作。

void::OnOnPopupMenuYAxisIplotx1(long Index, BOOL FAR* Cancel, long ScreenX, long ScreenY)
{
CMenu menu;
m_ValueEdit.Format("%s%s", m_iPlotX1.GetYAxis(Index).GetName()," PopUp Menu is Selected");
UpdateData(FALSE);
VERIFY(menu.LoadMenu(IDR_MYPOPUPMENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, ScreenX, ScreenY, AfxGetMainWnd());
*Cancel = TRUE;
}

OnBeforePrint:使用OnBeforePrint在图表发送到打印机之前执行操作。此事件将在打印发送到打印机之前,在显示打印机选择对话框之后触发。此事件通常用于在打印前对图表进行修改,例如反转颜色或将颜色设置为黑色和白色以获得更好的打印输出。在OnBeforePrint和OnAfterPrint事件之间对组件所做的更改将不会显示在屏幕上。当您只想为打印目的进行更改,而不希望屏幕闪烁或更改时,此功能非常有用。

OnBeforePrint()
{
ColeFont MyFont;
MyFont = m_iPlotX1.GetXAxis(0).GetLabelsFont();
MyFont.SetBold(TRUE);
m_iPlotX1.GetXAxis(0).SetLabelsFont(MyFont);
m_iPlotX1.GetChannel(0).SetTraceLineWidth(2);
m_iPlotX1.GetChannel(1).SetTraceLineWidth(2);
m_iPlotX1.GetChannel(2).SetTraceLineWidth(2);
m_iPlotX1.GetChannel(3).SetTraceLineWidth(2);
m_iPlotX1.GetChannel(4).SetTraceLineWidth(2);
m_iPlotX1.GetChannel(5).SetTraceLineWidth(2);
m_iPlotX1.GetDataView(0).SetGridLineXMajorCustom(TRUE);
m_iPlotX1.GetDataView(0).SetGridLineYMajorCustom(TRUE);
m_iPlotX1.GetDataView(0).SetGridLineXMajorWidth(2);
m_iPlotX1.GetDataView(0).SetGridLineYMajorWidth(2);
m_iPlotX1.GetLegend(0).SetFont(MyFont);
m_iPlotX1.GetLabels(0).SetVisible(TRUE);
}

OnAfterPrint:此事件用于撤消在OnBeforePrint事件中所做的更改。在OnBeforePrint和OnAfterPrint事件之间对组件所做的更改将不会显示在屏幕上。

OnAfterPrint()
{
ColeFont MyFont;
MyFont = m_iPlotX1.GetXAxis(0).GetLabelsFont();
MyFont.SetBold(FALSE);
m_iPlotX1.GetXAxis(0).SetLabelsFont(MyFont);
m_iPlotX1.GetChannel(0).SetTraceLineWidth(1);
m_iPlotX1.GetChannel(1).SetTraceLineWidth(1);
m_iPlotX1.GetChannel(2).SetTraceLineWidth(1);
m_iPlotX1.GetChannel(3).SetTraceLineWidth(1);
m_iPlotX1.GetChannel(4).SetTraceLineWidth(1);
m_iPlotX1.GetChannel(5).SetTraceLineWidth(1);
m_iPlotX1.GetDataView(0).SetGridLineXMajorCustom(FALSE);
m_iPlotX1.GetDataView(0).SetGridLineYMajorCustom(FALSE);
m_iPlotX1.GetDataView(0).SetGridLineXMajorWidth(1);
m_iPlotX1.GetDataView(0).SetGridLineYMajorWidth(1);
m_iPlotX1.GetLegend(0).SetFont(MyFont);
m_iPlotX1.GetLabels(0).SetVisible(FALSE);
}

OnAnnotationCoordinatesChange:当批注的位置或大小更改时发生。使用onAnnotationCoordinateChange指定注释对象的X、Y、X2、Y2、宽度或高度属性更改时要执行的操作。

void::OnOnAnnotationCoordinatesChangeIplotx1(long Index)
{
m_ValueEdit.Format("%s%s", m_iPlotX1.GetAnnotation (Index).GetName(), " has Moved");
UpdateData(FALSE);
}

OnAnnotationCoordinatesChangeFinished:当批注的位置或大小更改时发生。使用OnAnnotationCoordinatesChangeFinished指定每当批注对象的X、Y、X2、Y2、宽度或高度属性更改时要执行的操作。

void::OnOnAnnotationCoordinatesChangeFinishedIplotx1(long Index)
{
m_ValueEdit.Format("%s%s%.2f%s%.2f", m_iPlotX1.GetAnnotation(Index).GetName()," has Stopped Moving
at XValue:", m_iPlotX1. GetAnnotation(Index).GetX(), " YValue:", m_iPlotX1.GetAnnotation(Index).GetY());
UpdateData(FALSE);
}

OnAfterLoadProperties:在使用运行时属性编辑器或LoadPropertiesFromFile方法将属性加载到组件后发生。使用OnAfterLoadProperties指定在使用运行时属性编辑器或LoadPropertiesFromFile方法加载组件属性后要执行的操作。

void::OnOnAfterLoadPropertiesIplotx1()
{
m_iPlotX1.LoadAnnotationsFromFile("C:\\Annotation22.cfg");
m_iPlotX1.LoadDataFromFile("C:\\Data22.cfg");
}

OnBeforeLoadProperties:在使用运行时属性编辑器或LoadPropertiesFromFile方法将属性加载到组件后发生。使用OnAfterLoadProperties指定在使用运行时属性编辑器或LoadPropertiesFromFile方法加载组件属性后要执行的操作。

void::OnOnBeforeLoadPropertiesIplotx1()
{
m_iPlotX1.SaveAnnotationsToFile("C:\\Annotation22.cfg");
m_iPlotX1.SaveDataToFile("C:\\Data22.cfg");
}

OnBeforeZoomBox:在用户选择要缩放的区域并释放鼠标按钮后发生。使用OnBeforeZoomBox指定在将缩放应用于图表之前要执行的操作,或在应用缩放之前取消缩放。下面的示例显示取消缩放并用矩形注释替换缩放区域。

void::OnOnBeforeZoomBoxIplotx1(long FAR* Left, long FAR* Top, long FAR* Right, long FAR* Bottom, BOOL FAR* Cancel)
{
int Index;
*Cancel = TRUE;
Index = m_iPlotX1.AddAnnotation();
m_iPlotX1.GetAnnotation(Index).SetStyle(2);
m_iPlotX1.GetAnnotation(Index).SetChannelName(m_iPlotX1.GetChannel(0). GetName());
m_iPlotX1.GetAnnotation(Index).SetReference(1);
m_iPlotX1.GetAnnotation(Index).SetHeight(m_iPlotX1.GetYAxis(0).PixelsToPosition(*Bottom) –m_iPlotX1.GetYAxis(0).PixelsToPosition(*Top ));
m_iPlotX1.GetAnnotation(Index).SetWidth(m_iPlotX1.GetXAxis(0).PixelsToPosition(*Right ) - m_iPlotX1.GetXAxis(0).PixelsToPosition(*Left));
m_iPlotX1.GetAnnotation(Index).SetX(m_iPlotX1.GetXAxis(0).PixelsToPosition(*Left) + (m_iPlotX1.GetAnnotation(Index).GetWidth() / 2));
m_iPlotX1.GetAnnotation(Index).SetY(m_iPlotX1.GetYAxis(0).PixelsToPosition(*Top) + (m_iPlotX1.GetAnnotation(Index).GetHeight() / 2));
m_ValueEdit.Format("%s%d%s%d%s%d%s%d", " Left : ", *Left,  " Top : ", *Top, " Right : ", *Right, " Bottom : ", *Bottom);
UpdateData(FALSE);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值