#pragma once #include "SettingsPropertyPage.h" class CProjectHCSettingsWrapper; typedef CSettingsPropertyPage CHCPropertyPage; class ATL_NO_VTABLE CProjectHCSettingsWrapper : public IPerPropertyBrowsing, public IVsPerPropertyBrowsing, public IPropertyContainer, public IDispatchImpl, public CComObjectRoot { // ========================================================================= // construct, init, destruct public: static HRESULT CreateInstance(CHCPropertyPage *pPage, IUnknown *pUnkParent, IUnknown **pIUnkPropPage); protected: CProjectHCSettingsWrapper(); HRESULT Init(CHCPropertyPage *pPage, IUnknown *pUnkParent, IUnknown **pIUnkPropPage); ~CProjectHCSettingsWrapper(); // construct, init, destruct // ========================================================================= public: BEGIN_COM_MAP(CProjectHCSettingsWrapper) COM_INTERFACE_ENTRY(IPerPropertyBrowsing) COM_INTERFACE_ENTRY(IVsPerPropertyBrowsing) COM_INTERFACE_ENTRY(IPropertyContainer) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IProjectHCSettings) END_COM_MAP() // ========================================================================= // IPerPropertyBrowsing // Used to populate Debug Start Mode list box public: STDMETHOD(GetDisplayString)( /* [in] */ DISPID dispID, /* [out] */ BSTR *pBstr); STDMETHOD(MapPropertyToPage)( /* [in] */ DISPID dispID, /* [out] */ CLSID *pClsid); STDMETHOD(GetPredefinedStrings)( /* [in] */ DISPID dispID, /* [out] */ CALPOLESTR * pCaStringsOut, /* [out] */ CADWORD * pCaCookiesOut); STDMETHOD(GetPredefinedValue)( /* [in] */ DISPID dispID, /* [in] */ DWORD dwCookie, /* [out] */ VARIANT *pVarOut); // IPerPropertyBrowsing // ========================================================================= // ========================================================================= // IVsPerPropertyBrowsing // To provide localized info displayed iin the property browser public : STDMETHOD(HideProperty)(DISPID dispid, BOOL* pfHide); STDMETHOD(DisplayChildProperties)(DISPID dispid, BOOL* pfDisplay); STDMETHOD(GetLocalizedPropertyInfo)( DISPID dispid, LCID localeID, BSTR* pbstrLocalizedName, BSTR* pbstrLocalizedDescription); STDMETHOD(HasDefaultValue)(DISPID dispid, BOOL* fDefault); STDMETHOD(IsPropertyReadOnly)(DISPID dispid, BOOL* pfReadOnly); STDMETHOD(GetClassName)(BSTR*); STDMETHOD(CanResetPropertyValue)(DISPID , BOOL* ); STDMETHOD(ResetPropertyValue)(DISPID ); // IVsPerPropertyBrowsing // ========================================================================= public: STDMETHOD(get_GHCOptions)(BSTR *pValue); STDMETHOD(put_GHCOptions)(BSTR Value); STDMETHOD(get_HugsOptions)(BSTR *pValue); STDMETHOD(put_HugsOptions)(BSTR Value); STDMETHOD(get_NHCOptions)(BSTR *pValue); STDMETHOD(put_NHCOptions)(BSTR Value); STDMETHOD(get_Extensions)(BSTR *pValue); STDMETHOD(put_Extensions)(BSTR Value); STDMETHOD(Commit)(); private: CComPtr m_srpIProjectHCSettings; CComBSTR m_cbstrGHCOptions; CComBSTR m_cbstrHugsOptions; CComBSTR m_cbstrNHCOptions; CComBSTR m_cbstrExtensions; CHCPropertyPage *m_pPage; };