MFC ActiveX控件:添加自定义方法

来源:互联网 发布:淘宝详情页制作软件 编辑:程序博客网 时间:2024/06/04 17:41

MFC ActiveX 控件:添加自定义方法

链接:http://msdn.microsoft.com/zh-cn/library/cc451420

Visual Studio .NET 2003
1(共 1)对本文的评价是有帮助- 评价此主题

自定义方法与常用方法的区别在于,自定义方法未由 COleControl 实现。必须为添加到控件的每个自定义方法提供实现。

ActiveX 控件用户可以随时调用自定义方法来执行控件特定的操作。自定义方法的调度映射项为 DISP_FUNCTION 窗体。

使用“添加方法向导”添加自定义方法

下列过程说明如何将自定义方法 PtInCircle 添加到 ActiveX 控件的主干代码。PtInCircle 确定传递给控件的坐标是在圆的内部还是外部。此过程也可用于添加其他自定义方法。用自定义方法名及其参数替换 PtInCircle 方法名和参数。

注意   此例使用“事件”一文中的 InCircle 函数。有关此函数的更多信息,请参见文章MFC ActiveX 控件:向 ActiveX 控件添加自定义事件。

使用“添加方法向导”添加 PtInCircle 自定义方法

  1. 加载控件的项目。
  2. 在“类视图”中展开控件的库节点。
  3. 右击控件的接口节点(库节点的第二个节点)打开快捷菜单。
  4. 在快捷菜单中单击“添加”,然后单击“添加方法”。

    此操作将打开“添加方法向导”。

  5. 在“方法名称”框中,键入“PtInCircle”。
  6. 在“内部名称”框中,键入方法的内部函数名或使用默认值(此例中为 PtInCircle)。
  7. 在“返回类型”框中,单击方法的返回类型“VARIANT_BOOL”。
  8. 使用“参数类型”和“参数名”控件,添加一个称为 xCoord 的参数(OLE_XPOS_PIXELS 类型)。
  9. 使用“参数类型”和“参数名”控件,添加一个称为 yCoord 的参数(OLE_YPOS_PIXELS 类型)。
  10. 单击“完成”。

“添加方法向导”对自定义方法的更改

当您添加自定义方法时,“添加方法向导”对控件类头 (.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(CSampleCtrl, "PtInCircle", PtInCircle, VARIANT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

DISP_FUNCTION 宏将 PtInCircle 方法映射到控件的处理函数 PtInCircle、将返回类型声明为VARIANT_BOOL 并声明传递给 PtInCircleVTS_XPOS_PIXELSVTS_YPOSPIXELS 类型的两个参数。

最后,“添加方法向导”将存根 (stub) 函数 CSampleCtrl::PtInCircle 添加到控件的实现 (.CPP) 文件的末尾。为使PtInCircle 按前面介绍的方式运行,必须对其做如下修改:

复制
VARIANT_BOOL CSampleCtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord){    return InCircle(CPoint(xCoord, yCoord));}

 

Visual Studio .NET 2003
1(共 1)对本文的评价是有帮助- 评价此主题

自定义方法与常用方法的区别在于,自定义方法未由 COleControl 实现。必须为添加到控件的每个自定义方法提供实现。

ActiveX 控件用户可以随时调用自定义方法来执行控件特定的操作。自定义方法的调度映射项为 DISP_FUNCTION 窗体。

使用“添加方法向导”添加自定义方法

下列过程说明如何将自定义方法 PtInCircle 添加到 ActiveX 控件的主干代码。PtInCircle 确定传递给控件的坐标是在圆的内部还是外部。此过程也可用于添加其他自定义方法。用自定义方法名及其参数替换 PtInCircle 方法名和参数。

注意   此例使用“事件”一文中的 InCircle 函数。有关此函数的更多信息,请参见文章MFC ActiveX 控件:向 ActiveX 控件添加自定义事件。

使用“添加方法向导”添加 PtInCircle 自定义方法

  1. 加载控件的项目。
  2. 在“类视图”中展开控件的库节点。
  3. 右击控件的接口节点(库节点的第二个节点)打开快捷菜单。
  4. 在快捷菜单中单击“添加”,然后单击“添加方法”。

    此操作将打开“添加方法向导”。

  5. 在“方法名称”框中,键入“PtInCircle”。
  6. 在“内部名称”框中,键入方法的内部函数名或使用默认值(此例中为 PtInCircle)。
  7. 在“返回类型”框中,单击方法的返回类型“VARIANT_BOOL”。
  8. 使用“参数类型”和“参数名”控件,添加一个称为 xCoord 的参数(OLE_XPOS_PIXELS 类型)。
  9. 使用“参数类型”和“参数名”控件,添加一个称为 yCoord 的参数(OLE_YPOS_PIXELS 类型)。
  10. 单击“完成”。

“添加方法向导”对自定义方法的更改

当您添加自定义方法时,“添加方法向导”对控件类头 (.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(CSampleCtrl, "PtInCircle", PtInCircle, VARIANT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

DISP_FUNCTION 宏将 PtInCircle 方法映射到控件的处理函数 PtInCircle、将返回类型声明为VARIANT_BOOL 并声明传递给 PtInCircleVTS_XPOS_PIXELSVTS_YPOSPIXELS 类型的两个参数。

最后,“添加方法向导”将存根 (stub) 函数 CSampleCtrl::PtInCircle 添加到控件的实现 (.CPP) 文件的末尾。为使PtInCircle 按前面介绍的方式运行,必须对其做如下修改:

复制
VARIANT_BOOL CSampleCtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord){    return InCircle(CPoint(xCoord, yCoord));}