首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IAccessible接口的重写函数在cwnd驱动的类中不起作用

IAccessible接口的重写函数在cwnd驱动的类中不起作用
EN

Stack Overflow用户
提问于 2012-05-10 14:17:34
回答 2查看 1.2K关注 0票数 7

我有一个名为-derived的CWnd按钮类,并且想要使用CWnd辅助功能,我在我的类中覆盖了这个函数:

代码语言:javascript
复制
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的实现:

代码语言:javascript
复制
HRESULT Button::get_accName(VARIANT varChild, BSTR *pszName)
{
   //*pszName = SysAllocString(lpstrTitle);
   return S_OK;
}

我在这个类的构造函数中调用了EnableActiveAccessibility(),但还不起作用。

EN

回答 2

Stack Overflow用户

发布于 2012-05-15 16:28:47

你有没有尝试过这样的东西:

代码语言:javascript
复制
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;
  } 
};
票数 0
EN

Stack Overflow用户

发布于 2012-05-21 23:51:52

您可能错误地调用了这些被覆盖的方法。尝试重命名覆盖。它可以让事情变得更清晰,并指出有什么地方出了问题。参见下面的示例实现。

代码语言:javascript
复制
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");
    }
};

像这样调用它:

代码语言:javascript
复制
void _tmain()
{ 
    Base* r = new Derived();

    Derived* d = dynamic_cast<Derived*>(r);
    d->Woo();
}

来自CodeProjects

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10528447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档