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

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. // MyStruct.cpp : Implementation of CMyStruct
  2. #include "stdafx.h"
  3. #include "StructDemo.h"
  4. #include "MyStruct.h"
  5. /////////////////////////////////////////////////////////////////////////////
  6. // CMyStruct
  7. STDMETHODIMP CMyStruct::GetPersonById(UINT id,StPerson** Result)
  8. {
  9. StPerson* p=(StPerson*)::CoTaskMemAlloc(sizeof(StPerson));
  10. p->age=23;
  11. p->name=::SysAllocString(L"zhangsan");
  12. p->sex=::SysAllocString(L"male");
  13. *Result=p;
  14. return S_OK;
  15. }
  16. STDMETHODIMP CMyStruct::GetAllPerson(UINT* number,StPerson** Result)
  17. {
  18. StPerson* p=(StPerson*)::CoTaskMemAlloc(2*sizeof(StPerson));
  19. ZeroMemory(p,2*sizeof(StPerson));
  20. p->age=23;
  21. p->name=::SysAllocString(L"zhangsan");
  22. p->sex=::SysAllocString(L"male");
  23. (p+1)->age=23;
  24. (p+1)->name=::SysAllocString(L"zhangsan1");
  25. (p+1)->sex=::SysAllocString(L"male");
  26.     *Result=p;
  27. *number=2;
  28. return S_OK;
  29. }
  30. STDMETHODIMP CMyStruct::SavePerson(UINT number,StPerson* Result, UINT* pResult)
  31. {
  32. int iResult=0;
  33. for(int i=0;i<number;i++)
  34. {
  35. iResult+=(Result+i)->age;
  36. }
  37. *pResult=iResult;
  38. return S_OK;
  39. }
  40. STDMETHODIMP CMyStruct::get_UID(BSTR *pVal)
  41. {
  42. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  43. *pVal=::SysAllocString(this->m_uid);
  44. return S_OK;
  45. }
  46. STDMETHODIMP CMyStruct::put_UID(BSTR newVal)
  47. {
  48. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  49. this->m_uid=::SysAllocString(newVal);
  50. ::SysFreeString(newVal);
  51. return S_OK;
  52. }