サーバー注釈の使用
このトピックでは、サーバー注釈を使用してコールバック オブジェクトを指定する方法について説明します。
コールバック オブジェクトを指定するプロパティをオーバーライドするには
- 注釈を付けるアクセス可能な要素への IAccessible インターフェイス ポインターを取得します。
- アクセス可能な要素で QueryInterface を呼び出して、 IAccIdentity インターフェイス ポインターを取得します。
- IAccIdentity インターフェイス ポインターで IAccIdentity::GetIdentityString() を呼び出して、注釈を付けるアクセス可能な要素を一意に識別する文字列を取得します。
- CoCreateInstance または CoCreateInstanceEx を使用して、IAccPropServices オブジェクトを作成します。
- IAccPropServer を実装するコンポーネント オブジェクト モデル (COM) オブジェクトを作成します。
- IAccPropServices::SetPropServer を呼び出し、ID 文字列、オーバーライドするプロパティを示す GUID、および IAccPropServer コールバック オブジェクトへのポインターを渡します。
- インターフェイス ポインターと空きメモリを解放します。
クライアントがアクセス可能な要素の プロパティを要求すると、コールバック オブジェクトが呼び出され、その値がクライアントに返されます。
値を指定する場合と同様に、サーバー開発者は IAccPropServices::ComposeHwndIdentityString メソッドを使用して ID 文字列を取得することもできます。または、 IAccPropServices::SetHwndPropServer メソッドを使用し、ID 文字列の代わりに hwnd、 idObject、または idChild パラメーターを指定できます。
コンテナー オブジェクトで SetPropServer または SetHwndPropServer を使用する場合、サーバー開発者は、必要に応じて、オーバーライドする情報がそのコンテナーのすべての要素の子にも適用されるように指定できます。
サーバーは、 IAccPropServices::ClearProps を使用して、いつでも注釈を明示的にクリアできます。 注釈付けされるアクセス可能な要素が消えると、注釈サービスによって注釈情報が自動的にクリーンされ、解放されるため、通常は必須ではありません。
この手順を使用して注釈を付けることができるプロパティの一覧を次に示します。
コールバックを指定するときにサポートされるプロパティ
コールバックを指定する場合は、次のプロパティに注釈を付けることができます。 現在、これらのプロパティは、値を指定して直接注釈を付けることはできません。
プロパティ | Type |
---|---|
PROPID_ACC_NAME | VT_BSTR |
PROPID_ACC_DESCRIPTION | VT_BSTR |
PROPID_ACC_ROLE | VT_I4 |
PROPID_ACC_STATE | VT_I4 |
PROPID_ACC_HELP | VT_BSTR |
PROPID_ACC_KEYBOARDSHORTCUT | VT_BSTR |
PROPID_ACC_DEFAULTACTION | VT_BSTR |
PROPID_ACC_VALUEMAP | VT_BSTR |
PROPID_ACC_ROLEMAP | VT_BSTR |
PROPID_ACC_STATEMAP | VT_BSTR |
PROPID_ACC_FOCUS | VT_DISPATCH VT_I4 |
PROPID_ACC_SELECTION | VT_DISPATCH VT_I4 VT_UNKNOWN |
PROPID_ACC_PARENT | VT_DISPATCH |
PROPID_ACC_NAV_UP | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_DOWN | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_LEFT | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_RIGHT | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_PREV | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_NEXT | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_FIRSTCHILD | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_LASTCHILD | VT_DISPATCH VT_I4 |