共用方式為


建立新的可存取物件

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