MyAbc.cpp
上传用户:weisheen
上传日期:2022-07-09
资源大小:19390k
文件大小:1k
源码类别:

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. // MyAbc.cpp : Implementation of CMyAbc
  2. #include "stdafx.h"
  3. #include "DispCallBack.h"
  4. #include "MyAbc.h"
  5. /////////////////////////////////////////////////////////////////////////////
  6. // CMyAbc
  7. STDMETHODIMP CMyAbc::SetLog(IDispatch *mylog)
  8. {
  9. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  10. // TODO: Add your implementation code here
  11. this->pMytools=mylog;
  12. return S_OK;
  13. }
  14. STDMETHODIMP CMyAbc::add(int a, int b, int *c)
  15. {
  16. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  17. // TODO: Add your implementation code here
  18. *c=a+b;
  19. if(this->pMytools!=NULL)
  20. {
  21. long id=1;
  22. //回调方法id;
  23. DISPID methodid=(DISPID)id;
  24. //回调方法参数;
  25. VARIANT paras[1];
  26. paras[0].vt=VT_BSTR;
  27. char buffer[20];
  28. sprintf(buffer,"%d",*c);
  29. CString str(buffer);
  30. paras[0].bstrVal=str.AllocSysString();
  31. DISPPARAMS disp;
  32. disp.cArgs=1;
  33. disp.rgvarg=paras;
  34. disp.cNamedArgs=0;
  35. disp.rgdispidNamedArgs=NULL;
  36. //输出参数;
  37. VARIANT vout;
  38. EXCEPINFO  ex;
  39. UINT   result=0;
  40. this->pMytools->Invoke(methodid,IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_METHOD,
  41. &disp,&vout,&ex,&result);
  42. }
  43. return S_OK;
  44. }