新しいアクセシビリティ対応オブジェクトを作成する
このシナリオでは、サーバーは各OBJID_CLIENT要求に応答して、新しいアクセス可能なオブジェクト を 作成します。
次のコード例では、コントロールへのポインターが追加のウィンドウ データから取得されます。 このハンドルとウィンドウ ハンドルは、カスタム アクセシビリティ サーバー (AccServer) オブジェクトのコンストラクターに渡されます。 このオブジェクトは、 OBJID_CLIENT を受信するたびに作成されます。
オブジェクトが作成されると、サーバーは参照を取得します。これは LresultFromObject を呼び出した後に解放する必要があります。これにより、クライアントが終了するとすぐにオブジェクトが破棄されます。 LresultFromObject は参照カウントを数回インクリメントしますが、これらの参照を解放するのはクライアント アプリケーションと Microsoft Active Accessibility ランタイムの責任であることに注意してください。
case WM_GETOBJECT:
{
// Return the IAccessible object.
if ((DWORD)lParam == OBJID_CLIENT)
{
// Get the control.
CustomListControl* pCustomList = (CustomListControl*)(LONG_PTR)GetWindowLongPtr(hwnd, 0);
AccServer* pAccServer = new AccServer(hwnd, pCustomList);
if (pAccServer != NULL) // NULL if out of memory.
{
LRESULT Lresult = LresultFromObject(IID_IAccessible, wParam, pAccServer);
pAccServer->Release();
return Lresult;
}
else return 0;
}
break;
}