建立新的無障礙物件
在此案例中,伺服器會建立新的可存取物件,以回應每個 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;
}