다음을 통해 공유


액세스 가능한 새 개체 만들기

이 시나리오에서 서버는 각 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;
}