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"芙蓉");//复制...
  22. p->sex=::SysAllocString(L"male");
  23. (p+1)->age=32;
  24. (p+1)->name=::SysAllocString(L"李松涛");
  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. // TODO: Add your implementation code here
  44. *pVal=::SysAllocString(this->m_uid);
  45. return S_OK;
  46. }
  47. STDMETHODIMP CMyStruct::put_UID(BSTR newVal)
  48. {
  49. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  50. // TODO: Add your implementation code here
  51. this->m_uid=::SysAllocString(newVal);
  52. ::SysFreeString(newVal);
  53. return S_OK;
  54. }