IAccessible接口的覆盖函数在CWnd驱动类中无法正常工作

7

我有一个名为button的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(),但它还没有起作用。


当我在基于对话框的MFC应用程序中为组合框覆盖IAccessible接口中的get_accName方法时,该方法会被执行。但是,当它被覆盖到其他标准控件(如按钮、编辑框、复选框)时,执行不会到达那里。 - A.Danesh
你不要假装使用get_accValue了吧? - sergiol
2个回答

0

你尝试过类似这样的东西吗:

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;
  } 
};

当从“CButton”继承“Button”类时,“get_accName”不会执行。 - A.Danesh

0

你可能在错误地调用这些被覆盖的方法。尝试重命名覆盖方法,这可以使事情更清晰,并指出是否有任何问题。请参见下面的示例实现。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接