Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
5.2 KiB

  1. // UserInfo.h : Declaration of the CUserInfo
  2. #ifndef __USERINFO_H_
  3. #define __USERINFO_H_
  4. #include "resource.h" // main symbols
  5. #define REGSTR_PATH_USERINFO TEXT("Software\\Microsoft\\User Information")
  6. extern LPCTSTR lpcsz_FirstName;
  7. extern LPCTSTR lpcsz_LastName;
  8. extern LPCTSTR lpcsz_Company;
  9. extern LPCTSTR lpcsz_Address1;
  10. extern LPCTSTR lpcsz_Address2;
  11. extern LPCTSTR lpcsz_City;
  12. extern LPCTSTR lpcsz_State;
  13. extern LPCTSTR lpcsz_ZIPCode;
  14. extern LPCTSTR lpcsz_PhoneNumber;
  15. #define NUM_USERINFO_ELEMENTS 9
  16. typedef struct userInfoQuery_tag
  17. {
  18. LPCTSTR lpcszRegVal;
  19. BSTR *pbstrVal;
  20. } USERINFOQUERY;
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CUserInfo
  23. class ATL_NO_VTABLE CUserInfo :
  24. public CComObjectRootEx<CComSingleThreadModel>,
  25. public CComCoClass<CUserInfo,&CLSID_UserInfo>,
  26. public CComControl<CUserInfo>,
  27. public IDispatchImpl<IUserInfo, &IID_IUserInfo, &LIBID_ICWHELPLib>,
  28. public IPersistStreamInitImpl<CUserInfo>,
  29. public IOleControlImpl<CUserInfo>,
  30. public IOleObjectImpl<CUserInfo>,
  31. public IOleInPlaceActiveObjectImpl<CUserInfo>,
  32. public IViewObjectExImpl<CUserInfo>,
  33. public IOleInPlaceObjectWindowlessImpl<CUserInfo>,
  34. public IObjectSafetyImpl<CUserInfo>
  35. {
  36. public:
  37. CUserInfo()
  38. {
  39. m_aUserInfoQuery[0].lpcszRegVal = lpcsz_FirstName;
  40. m_aUserInfoQuery[0].pbstrVal = &m_bstrFirstName;
  41. m_aUserInfoQuery[1].lpcszRegVal = lpcsz_LastName;
  42. m_aUserInfoQuery[1].pbstrVal = &m_bstrLastName;
  43. m_aUserInfoQuery[2].lpcszRegVal = lpcsz_Address1;
  44. m_aUserInfoQuery[2].pbstrVal = &m_bstrAddress1;
  45. m_aUserInfoQuery[3].lpcszRegVal = lpcsz_Address2;
  46. m_aUserInfoQuery[3].pbstrVal = &m_bstrAddress2;
  47. m_aUserInfoQuery[4].lpcszRegVal = lpcsz_City;
  48. m_aUserInfoQuery[4].pbstrVal = &m_bstrCity;
  49. m_aUserInfoQuery[5].lpcszRegVal = lpcsz_State;
  50. m_aUserInfoQuery[5].pbstrVal = &m_bstrState;
  51. m_aUserInfoQuery[6].lpcszRegVal = lpcsz_ZIPCode;
  52. m_aUserInfoQuery[6].pbstrVal = &m_bstrZIPCode;
  53. m_aUserInfoQuery[7].lpcszRegVal = lpcsz_PhoneNumber;
  54. m_aUserInfoQuery[7].pbstrVal = &m_bstrPhoneNumber;
  55. m_aUserInfoQuery[8].lpcszRegVal = lpcsz_Company;
  56. m_aUserInfoQuery[8].pbstrVal = &m_bstrCompany;
  57. }
  58. DECLARE_REGISTRY_RESOURCEID(IDR_USERINFO)
  59. BEGIN_COM_MAP(CUserInfo)
  60. COM_INTERFACE_ENTRY(IDispatch)
  61. COM_INTERFACE_ENTRY(IUserInfo)
  62. COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx)
  63. COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx)
  64. COM_INTERFACE_ENTRY_IMPL(IViewObjectEx)
  65. COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleWindow, IOleInPlaceObjectWindowless)
  66. COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleInPlaceObject, IOleInPlaceObjectWindowless)
  67. COM_INTERFACE_ENTRY_IMPL(IOleInPlaceObjectWindowless)
  68. COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject)
  69. COM_INTERFACE_ENTRY_IMPL(IOleControl)
  70. COM_INTERFACE_ENTRY_IMPL(IOleObject)
  71. COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit)
  72. COM_INTERFACE_ENTRY_IMPL(IObjectSafety)
  73. END_COM_MAP()
  74. BEGIN_PROPERTY_MAP(CUserInfo)
  75. // Example entries
  76. // PROP_ENTRY("Property Description", dispid, clsid)
  77. // PROP_PAGE(CLSID_StockColorPage)
  78. END_PROPERTY_MAP()
  79. BEGIN_MSG_MAP(CUserInfo)
  80. MESSAGE_HANDLER(WM_PAINT, OnPaint)
  81. MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
  82. MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
  83. END_MSG_MAP()
  84. // IViewObjectEx
  85. STDMETHOD(GetViewStatus)(DWORD* pdwStatus)
  86. {
  87. ATLTRACE(_T("IViewObjectExImpl::GetViewStatus\n"));
  88. *pdwStatus = 0;
  89. return S_OK;
  90. }
  91. // IUserInfo
  92. public:
  93. STDMETHOD(PersistRegisteredUserInfo)(/*[out, retval]*/ BOOL *pbRetVal);
  94. STDMETHOD(get_Lcid)(/*[out, retval]*/ long *pVal);
  95. STDMETHOD(get_PhoneNumber)(/*[out, retval]*/ BSTR *pVal);
  96. STDMETHOD(put_PhoneNumber)(/*[in]*/ BSTR newVal);
  97. STDMETHOD(get_ZIPCode)(/*[out, retval]*/ BSTR *pVal);
  98. STDMETHOD(put_ZIPCode)(/*[in]*/ BSTR newVal);
  99. STDMETHOD(get_State)(/*[out, retval]*/ BSTR *pVal);
  100. STDMETHOD(put_State)(/*[in]*/ BSTR newVal);
  101. STDMETHOD(get_City)(/*[out, retval]*/ BSTR *pVal);
  102. STDMETHOD(put_City)(/*[in]*/ BSTR newVal);
  103. STDMETHOD(get_Address2)(/*[out, retval]*/ BSTR *pVal);
  104. STDMETHOD(put_Address2)(/*[in]*/ BSTR newVal);
  105. STDMETHOD(get_Address1)(/*[out, retval]*/ BSTR *pVal);
  106. STDMETHOD(put_Address1)(/*[in]*/ BSTR newVal);
  107. STDMETHOD(get_LastName)(/*[out, retval]*/ BSTR *pVal);
  108. STDMETHOD(put_LastName)(/*[in]*/ BSTR newVal);
  109. STDMETHOD(get_FirstName)(/*[out, retval]*/ BSTR *pVal);
  110. STDMETHOD(put_FirstName)(/*[in]*/ BSTR newVal);
  111. STDMETHOD(get_Company)(/*[out, retval]*/ BSTR *pVal);
  112. STDMETHOD(put_Company)(/*[in]*/ BSTR newVal);
  113. STDMETHOD(CollectRegisteredUserInfo)(/*[out, retval]*/ BOOL *pbRetVal);
  114. HRESULT OnDraw(ATL_DRAWINFO& di);
  115. private:
  116. CComBSTR m_bstrFirstName;
  117. CComBSTR m_bstrLastName;
  118. CComBSTR m_bstrCompany;
  119. CComBSTR m_bstrAddress1;
  120. CComBSTR m_bstrAddress2;
  121. CComBSTR m_bstrCity;
  122. CComBSTR m_bstrState;
  123. CComBSTR m_bstrZIPCode;
  124. CComBSTR m_bstrPhoneNumber;
  125. long m_lLcid;
  126. USERINFOQUERY m_aUserInfoQuery[NUM_USERINFO_ELEMENTS];
  127. };
  128. #endif //__USERINFO_H_