本文在 ActiveX 控件相关主题介绍实现高级属性:
只读和只写属性。
从属性中返回错误代码
只读和只写属性。
添加属性向导提供一个快速、更简单的方法实现控件的只读或只写属性。
实现一只读或只写属性
加载控件的项目。
在"类视图,展开控件的库节点。
右击控件 (库节点的第二个节点接口节点) 打开快捷菜单。
从快捷菜单中单击 添加,然后单击 添加属性。
这会打开 添加属性向导。
在 属性名 框,键入属性的名称。
对于 Implementation Type,单击 Get/Set Methods。
在 属性类型 框中,选择属性的适当类型。
如果需要一只读属性,请清除集合函数名称。 如果需要一只写属性,请清除获取函数名。
单击**“完成”**。
此时,"添加属性向导替换常规设置或获取函数位置插入在计划映射项的函数 SetNotSupported 或 GetNotSupported。
如果要更改现有属性的只读或只写,可以手动编辑计划映射并从控件类中移除不必要的设置或获取函数。
如果希望属性按条件只读或只写 (例如,控件处于特定模式,只有运行),只要适用就可以提供设置或获取函数,用作常规,并调用 SetNotSupported 或 GetNotSupported 函数。 例如:
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 还是定义一个拥有。 有关预定义的 SCODEs 和指令列表自定义的 SCODE,请参见在 ActiveX 控件的文章 在 ActiveX 控件中的错误处理 :高级主题。
帮助程序函数。常见预定义的 SCODE。最存在,如 COleControl::SetNotSupportedCOleControl::GetNotSupportedCOleControl::SetNotPermitted、和。
备注
ThrowError 被视为是只能作为返回错误的方法从的属性获取或设置函数或自动化方法内。这是仅有的时间相应的异常处理程序会存在于堆栈。
有关在代码的其他区域的异常报告的更多信息,请参见 COleControl::FireError 和节中的 在 ActiveX 控件中的错误处理 文章 ActiveX 控件:高级主题。