|
|
// UserInfo.h : Declaration of the CUserInfo
#ifndef __USERINFO_H_
#define __USERINFO_H_
#include "resource.h" // main symbols
#define REGSTR_PATH_USERINFO TEXT("Software\\Microsoft\\User Information")
extern LPCTSTR lpcsz_FirstName; extern LPCTSTR lpcsz_LastName; extern LPCTSTR lpcsz_Company; extern LPCTSTR lpcsz_Address1; extern LPCTSTR lpcsz_Address2; extern LPCTSTR lpcsz_City; extern LPCTSTR lpcsz_State; extern LPCTSTR lpcsz_ZIPCode; extern LPCTSTR lpcsz_PhoneNumber;
#define NUM_USERINFO_ELEMENTS 9
typedef struct userInfoQuery_tag { LPCTSTR lpcszRegVal; BSTR *pbstrVal; } USERINFOQUERY;
/////////////////////////////////////////////////////////////////////////////
// CUserInfo
class ATL_NO_VTABLE CUserInfo : public CComObjectRootEx<CComSingleThreadModel>, public CComCoClass<CUserInfo,&CLSID_UserInfo>, public CComControl<CUserInfo>, public IDispatchImpl<IUserInfo, &IID_IUserInfo, &LIBID_ICWHELPLib>, public IPersistStreamInitImpl<CUserInfo>, public IOleControlImpl<CUserInfo>, public IOleObjectImpl<CUserInfo>, public IOleInPlaceActiveObjectImpl<CUserInfo>, public IViewObjectExImpl<CUserInfo>, public IOleInPlaceObjectWindowlessImpl<CUserInfo>, public IObjectSafetyImpl<CUserInfo> { public: CUserInfo() { m_aUserInfoQuery[0].lpcszRegVal = lpcsz_FirstName; m_aUserInfoQuery[0].pbstrVal = &m_bstrFirstName; m_aUserInfoQuery[1].lpcszRegVal = lpcsz_LastName; m_aUserInfoQuery[1].pbstrVal = &m_bstrLastName; m_aUserInfoQuery[2].lpcszRegVal = lpcsz_Address1; m_aUserInfoQuery[2].pbstrVal = &m_bstrAddress1; m_aUserInfoQuery[3].lpcszRegVal = lpcsz_Address2; m_aUserInfoQuery[3].pbstrVal = &m_bstrAddress2; m_aUserInfoQuery[4].lpcszRegVal = lpcsz_City; m_aUserInfoQuery[4].pbstrVal = &m_bstrCity; m_aUserInfoQuery[5].lpcszRegVal = lpcsz_State; m_aUserInfoQuery[5].pbstrVal = &m_bstrState; m_aUserInfoQuery[6].lpcszRegVal = lpcsz_ZIPCode; m_aUserInfoQuery[6].pbstrVal = &m_bstrZIPCode; m_aUserInfoQuery[7].lpcszRegVal = lpcsz_PhoneNumber; m_aUserInfoQuery[7].pbstrVal = &m_bstrPhoneNumber; m_aUserInfoQuery[8].lpcszRegVal = lpcsz_Company; m_aUserInfoQuery[8].pbstrVal = &m_bstrCompany; }
DECLARE_REGISTRY_RESOURCEID(IDR_USERINFO)
BEGIN_COM_MAP(CUserInfo) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IUserInfo) COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx) COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx) COM_INTERFACE_ENTRY_IMPL(IViewObjectEx) COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleWindow, IOleInPlaceObjectWindowless) COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleInPlaceObject, IOleInPlaceObjectWindowless) COM_INTERFACE_ENTRY_IMPL(IOleInPlaceObjectWindowless) COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject) COM_INTERFACE_ENTRY_IMPL(IOleControl) COM_INTERFACE_ENTRY_IMPL(IOleObject) COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit) COM_INTERFACE_ENTRY_IMPL(IObjectSafety) END_COM_MAP()
BEGIN_PROPERTY_MAP(CUserInfo) // Example entries
// PROP_ENTRY("Property Description", dispid, clsid)
// PROP_PAGE(CLSID_StockColorPage)
END_PROPERTY_MAP()
BEGIN_MSG_MAP(CUserInfo) MESSAGE_HANDLER(WM_PAINT, OnPaint) MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus) MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus) END_MSG_MAP()
// IViewObjectEx
STDMETHOD(GetViewStatus)(DWORD* pdwStatus) { ATLTRACE(_T("IViewObjectExImpl::GetViewStatus\n")); *pdwStatus = 0; return S_OK; }
// IUserInfo
public: STDMETHOD(PersistRegisteredUserInfo)(/*[out, retval]*/ BOOL *pbRetVal); STDMETHOD(get_Lcid)(/*[out, retval]*/ long *pVal); STDMETHOD(get_PhoneNumber)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_PhoneNumber)(/*[in]*/ BSTR newVal); STDMETHOD(get_ZIPCode)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_ZIPCode)(/*[in]*/ BSTR newVal); STDMETHOD(get_State)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_State)(/*[in]*/ BSTR newVal); STDMETHOD(get_City)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_City)(/*[in]*/ BSTR newVal); STDMETHOD(get_Address2)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_Address2)(/*[in]*/ BSTR newVal); STDMETHOD(get_Address1)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_Address1)(/*[in]*/ BSTR newVal); STDMETHOD(get_LastName)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_LastName)(/*[in]*/ BSTR newVal); STDMETHOD(get_FirstName)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_FirstName)(/*[in]*/ BSTR newVal); STDMETHOD(get_Company)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(put_Company)(/*[in]*/ BSTR newVal); STDMETHOD(CollectRegisteredUserInfo)(/*[out, retval]*/ BOOL *pbRetVal); HRESULT OnDraw(ATL_DRAWINFO& di);
private: CComBSTR m_bstrFirstName; CComBSTR m_bstrLastName; CComBSTR m_bstrCompany; CComBSTR m_bstrAddress1; CComBSTR m_bstrAddress2; CComBSTR m_bstrCity; CComBSTR m_bstrState; CComBSTR m_bstrZIPCode; CComBSTR m_bstrPhoneNumber; long m_lLcid;
USERINFOQUERY m_aUserInfoQuery[NUM_USERINFO_ELEMENTS];
};
#endif //__USERINFO_H_
|