MFC ActiveX 控件:高级属性实现。

本文在 Activex 主题描述与实现高级属性关联:

  • 只读和只写属性

  • 从属性中返回错误代码

只读和只写属性

添加属性向导 " 提供了一种简单快捷的方法实现控件的只读或只写属性。

实现只读或只写属性

  1. 加载您的控件的项目中。

  2. 在 " 类视图 " 中,展开您的控件库节点。

  3. 右击您的控件 (库节点的第二个节点接口节点) 打开快捷菜单。

  4. 从快捷菜单上,单击 添加 然后单击 添加属性

    这将打开 添加属性向导

  5. 属性名 框中,键入您的属性的名称。

  6. Implementation Type,单击 Get/Set Methods

  7. 属性类型 框中,为属性选择适当的类型。

  8. 如果您需要一个只读属性,请清除设置函数的名称。如果需要一个只读属性,请清除获取函数名。

  9. 单击**“完成”**。

当您这样做, " 添加属性向导 " 插入功能 SetNotSupportedGetNotSupported 在一个规则设置或获取函数位置的计划映射项。

如果要更改现有属性为只读或只写,可以手动编辑计划映射并从控件类中移除不必要的设置或获取函数。

如果希望属性按条件只读或只写 (例如,因此,只有当控件在特定模式下运行),在适当的时候可以提供设置或获取函数,规则,并调用 SetNotSupportedGetNotSupported 功能。例如:

void CMyAxUICtrl::SetMyProperty(SHORT newVal)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   if (m_bReadOnlyMode)   //  some control-specific state
   {
      SetNotSupported();
   }
   else
   {
      m_iPropVal = newVal;   //  set property as normal
      SetModifiedFlag();
   }
}

,如果 m_bReadOnlyMode 数据成员是 TRUE,此代码示例调用 SetNotSupported 。如果 FALSE,属性将设置为新值。

从属性中返回错误代码

指示错误时,尝试获取或设置属性,请使用 COleControl::ThrowError 功能,采用 SCODE (状态代码) 作为参数。您可以使用预定义的 SCODE 或定义自己的站点。有关预定义的 SCODE的和命令列表定义的自定义 SCODEs,请参见位于 " Activex 控件的 进程在您的 Activex 控件的错误 :高级主题。

helper 函数为常见预定义的 SCODE的最存在,例如 COleControl::SetNotSupportedCOleControl::GetNotSupportedCOleControl::SetNotPermitted

说明说明

   ThrowError 被视为仅用作返回错误的方法从属性中获取的内部或设置功能或自动化方法。这些是唯一的时间相应的异常处理程序将存在于堆栈。

有关报告异常的更多信息代码中的其他区域,请参见 COleControl::FireError 和该部分将文章 Activex 控件的 进程在您的 Activex 控件的错误 :高级主题。

请参见

参考

COleControl 类

概念

MFC ActiveX 控件

MFC ActiveX 控件:属性

MFC ActiveX 控件:方法