我有一个名为-derived的CWnd按钮类,并且想要使用CWnd辅助功能,我在我的类中覆盖了这个函数:
virtual HRESULT get_accName(VARIANT varChild, BSTR *pszName);
virtual HRESULT get_accChildCount(long *pcountChildren);
virtual HRESULT get_accDefaultAction(VARIANT varChild, BSTR *pszDefaultAction);
virtual HRESULT get_accDescription(VARIANT varChild, BSTR *pszDescription);
virtual HRESULT get_accKeyboardShortcut(VARIANT varChild, BSTR *pszKeyboardShortcut);
virtual HRESULT get_accParent(IDispatch **ppdispParent);
virtual HRESULT get_accRole(VARIANT varChild, VARIANT *pvarRole);
virtual HRESULT get_accState(VARIANT varChild, VARIANT *pvarState);
virtual HRESULT get_accValue(VARIANT varChild, BSTR *pszValue);当我运行程序,并在实现这些函数中的任何一个时设置断点,程序没有进入这些函数,而是使用父函数,有什么可以帮助我的吗?
Get_accName的实现:
HRESULT Button::get_accName(VARIANT varChild, BSTR *pszName)
{
//*pszName = SysAllocString(lpstrTitle);
return S_OK;
}我在这个类的构造函数中调用了EnableActiveAccessibility(),但还不起作用。
发布于 2012-05-15 16:28:47
你有没有尝试过这样的东西:
class CWnd {
virtual HRESULT get_accChildCount(long *pcountChildren);
};
class Button : public CWnd {
virtual HRESULT get_accChildCount(long *pcountChildren) {
HRESULT childCount = CWnd:get_accChildCount(long *pcountChildren);
//you can use the value from the ancestor class if it is of any use
//to you or add your own code
childCount = 1234;
return childCount;
}
};发布于 2012-05-21 23:51:52
您可能错误地调用了这些被覆盖的方法。尝试重命名覆盖。它可以让事情变得更清晰,并指出有什么地方出了问题。参见下面的示例实现。
ref class Base
{
public:
virtual void Boo()
{
Show("Base::Boo");
}
};
ref class Derived : Base
{
public:
//Overrides Base::Boo
virtual void Woo() = Base::Boo
{
Show("Derived::Woo");
}
};像这样调用它:
void _tmain()
{
Base* r = new Derived();
Derived* d = dynamic_cast<Derived*>(r);
d->Woo();
}来自CodeProjects
https://stackoverflow.com/questions/10528447
复制相似问题