2012-05-10 11 views
6

では動作しません。私は、ボタンの名前CWnd由来のクラスを持っている、とCWndアクセシビリティ機能を使用したい、私は私のクラスでは、この関数をオーバーライド:オーバーライド機能は、cwndは-drivedクラス

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()を呼び出すが、まだ動作しません。あなたは間違ってこれらのオーバーライドメソッドを呼び出すことが可能

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

から、私は、ダイアログベースのMFCアプリケーションでのコンボボックスののIAccessibleインターフェイスでget_accNameメソッドをオーバーライドする場合は、メソッドが実行されます。しかし、Button、Edit、Checkboxなどの他の標準コントロールでオーバーライドされても、実行はそこには届きません。 –

+0

'get_accValue'を使うふりをしていませんか? – sergiol

答えて

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

+0

_ "Button" _クラスが_ "CButton" _から継承されるとき、_ "get_accName" _は実行されません。 –

関連する問題