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