/*++ Copyright (C) 1996-1999 Microsoft Corporation Module Name: colefont.h Abstract: --*/ #ifndef _COLEFONT_H_ #define _COLEFONT_H_ class COleFont; class CImpIPropertyNotifySink : public IPropertyNotifySink { public: CImpIPropertyNotifySink(COleFont* pOleFont); ~CImpIPropertyNotifySink(void); //IUnknown members STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); //Property sink methods STDMETHODIMP OnChanged( DISPID DispId ); STDMETHODIMP OnRequestEdit( DISPID ); private: COleFont* m_pOleFont; ULONG m_cRef; }; class CSysmonControl; class COleFont { public: COleFont ( CSysmonControl *pCtrl ); ~COleFont( void ); // // The following functions are not method of a interface // It is better to change the STDMETHODIMP into HRESULT // STDMETHODIMP Init( void ); STDMETHODIMP SetIFont ( LPFONT pIFont ); STDMETHODIMP GetFontDisp ( IFontDisp **ppFont ); STDMETHODIMP GetHFont ( HFONT *phFont ); STDMETHODIMP GetHFontBold ( HFONT *phFont ); STDMETHODIMP SaveToStream ( LPSTREAM pIStream, BOOL fClearDirty ); STDMETHODIMP LoadFromStream ( LPSTREAM pIStream ); STDMETHODIMP SaveToPropertyBag ( IPropertyBag*, BOOL fClearDirty, BOOL fSaveAllProps ); STDMETHODIMP LoadFromPropertyBag ( IPropertyBag*, IErrorLog* ); STDMETHODIMP_(VOID) FontChange ( DISPID DispId ); private: void InitDefaultFontDesc ( FONTDESC&, INT&, WCHAR[LF_FACESIZE+1] ); static const LPWSTR m_cwszDefaultFaceName; static const INT m_iDefaultTmHeight; static const INT m_iDefaultRiPxlsPerInch; static const SHORT m_iDefaultTmWeight; CSysmonControl *m_pCtrl; IFont *m_pIFont; IFont *m_pIFontBold; IConnectionPoint *m_pIConnPt; CImpIPropertyNotifySink m_NotifySink; DWORD m_dwCookie; }; #endif