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
149 lines
5.2 KiB
// 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_
|