MFC ActiveX 控件:添加自定义方法
自定义方法与股票有所不同它们不包括 COleControl已经实现。 您必须提供自己添加到控件的每个自定义方法的实现。
Activex 控件用户可随时调用自定义方法执行特定于控件的事件。 自定义方法的计划映射项是窗体 DISP_FUNCTION。
添加了添加方法向导 " 的自定义方法
下面的过程演示添加自定义方法 PtInCircle 到 Activex 控件的主干代码。 PtInCircle 确定坐标传递给该控件是否在内部或在该圆形之外。 此相同程序也可以使用添加其他自定义方法。 在 PtInCircle 方法名称和参数并将您的自定义方法名称及其参数。
备注
此示例使用从文章事件的 InCircle 功能。有关此功能的更多信息,请参见中的文章 MFC Activex 控件:添加自定义操作添加到 Activex 控件。
使用 " 添加方法向导 ",添加 PtInCircle 自定义方法
加载控件的项目中。
在 " 类视图 " 中,展开您的控件库节点。
右击您的控件 (库节点的第二个节点接口节点) 打开快捷菜单。
从快捷菜单上,单击 添加 然后单击 添加方法。
这将打开 " 添加方法向导 "。
在 方法名称 框中,键入 PtInCircle。
在 内部名称 框中,键入方法的内部函数的名称或使用默认 (在这种情况下, PtInCircle)。
在 返回类型 框中,方法中单击 VARIANT_BOOL 返回类型。
使用 Parameter Type 和 参数名称 控件中,添加名为 xCoord 的参数 (类型 OLE_XPOS_PIXELS)。
使用 Parameter Type 和 参数名称 控件中,添加名为 yCoord的参数 (类型 OLE_YPOS_PIXELS)。
单击**“完成”**。
添加方法自定义方法的向导更改
当您添加自定义方法时, " 添加方法向导对控件类头的一些更改 (。H) 和实现 (.CPP) 文件。 以下行添加到控件类头的计划映射声明 (。H) 文件:
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
此代码声明计划方法处理程序调用的 PtInCircle。 此功能可以使用该外部名称 PtInCircle 的控件用户调用。
以下行添加到控件的 .IDL 文件:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
此行分配 PtInCircle 方法特定 ID 号,在 " 添加方法向导方法的方法的位置,并在属性列表。 由于添加方法向导使用添加为自定义的方法,会自动将该文件的项添加到项目的 .IDL 文件。
此外,下行,位于控件类的实现 (.CPP) 文件,并将其添加到控件的计划映射:
DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
DISP_FUNCTION 宏映射方法 PtInCircle 到控件的处理程序函数, PtInCircle,声明的返回类型为 VARIANT_BOOL,并声明类型将传递的 VTS_XPOS_PIXELS 和 VTS_YPOSPIXELS 的两个参数。 PtInCircle。
最后, " 添加方法向导将存根功能 CSampleCtrl::PtInCircle 到控件的实现 (.CPP) 文件的底部。 对于功能的 PtInCircle 象上面指定,必须修改该如下所示:
VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CPoint point(xCoord, yCoord);
return InCircle(point);
}