IAccessible接口的重写函数在cwnd-drived类中不起作用

ami*_*deh 7 mfc accessibility cwnd visual-c++

我有一个CWnd名为button的类,并且想要使用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);
Run Code Online (Sandbox Code Playgroud)

当我运行程序,并在执行任何这些函数时设置中断点,程序不会进入这些函数,而是使用父函数,可以帮助我吗?

get_accName的实现:

HRESULT Button::get_accName(VARIANT varChild, BSTR *pszName)
{
   //*pszName = SysAllocString(lpstrTitle);
   return S_OK;
}
Run Code Online (Sandbox Code Playgroud)

EnableActiveAccessibility()在这个类的构造函数中调用,但是还没有工作.

小智 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;
  } 
};
Run Code Online (Sandbox Code Playgroud)