COM, ATL

인보크 구현부 참조

디버그정 2008. 8. 16. 17:59
STDMETHODIMP CDispatchSink::Invoke(DISPID dispidMember, REFIID riid,
                                         LCID lcid, WORD wFlags,
                                         DISPPARAMS* pdispparams, VARIANT*
                                         pvarResult, EXCEPINFO* pexcepinfo,
                                         UINT* puArgErr)
      {
         HRESULT hr = S_OK;
         if (pdispparams)
         {
            switch (dispidMember)
            {
               case 2:
               {
                  if (pdispparams->cArgs == 1)
                  {
                     if (pdispparams->rgvarg[0].vt == VT_I2)
                        Event2(pdispparams->rgvarg[0].iVal);
                     else
                        hr = DISP_E_TYPEMISMATCH;
                  }
                  else
                     hr = DISP_E_BADPARAMCOUNT;
                  break;
               }
      // Other desired case statements[ASCII 133].
               default:
               {
                  hr = DISP_E_MEMBERNOTFOUND;
                  break;
               }
            }
         }
         else
            hr = DISP_E_PARAMNOTFOUND;
         return hr;
      }

'COM, ATL' 카테고리의 다른 글

COM인터페이스 디자인 가이드  (0) 2008.08.18
lcid 로케일  (0) 2008.08.18
IDispatch::Invoke  (1) 2008.08.16
자동화에서 타입라이브러리 등록과 해제 코드  (0) 2008.08.14
COM 개체 구현 실습  (2) 2008.08.14
com을 위한 기초  (3) 2008.08.14
표준 프락시 스텁 dll 작성법 및 기본개념들  (0) 2008.08.14