⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calcpi.h

📁 《ATL深入解析》随书源码
💻 H
字号:
// CalcPi.h : Declaration of the CCalcPi

#ifndef __CALCPI_H_
#define __CALCPI_H_

#include "resource.h"       // main symbols
#include "PiSvrCP.h"
#include "advert.h"

/////////////////////////////////////////////////////////////////////////////
// CCalcPi
class ATL_NO_VTABLE CCalcPi : 
  public CComObjectRootEx<CComSingleThreadModel>,
  public CComCoClass<CCalcPi, &CLSID_CalcPi>,
  public ISupportErrorInfo,
  public IConnectionPointContainerImpl<CCalcPi>,
  public IDispatchImpl<ICalcPi, &IID_ICalcPi, &LIBID_PISVRLib>,
  public IPersistPropertyBagImpl<CCalcPi>,
  public IProvideClassInfo2Impl<&CLSID_CalcPi, &DIID__ICalcPiEvents>,
  public CProxy_ICalcPiEvents< CCalcPi >,
  public IAdvertiseMyself,
	public CComControl<CCalcPi>,
	public IPersistStreamInitImpl<CCalcPi>,
	public IPersistStorageImpl<CCalcPi>,
	public IOleControlImpl<CCalcPi>,
	public IOleObjectImpl<CCalcPi>,
	public IOleInPlaceActiveObjectImpl<CCalcPi>,
	public IViewObjectExImpl<CCalcPi>,
	public IOleInPlaceObjectWindowlessImpl<CCalcPi>
{
public:
  CCalcPi() : m_nDigits(0)
  {
  }
  
DECLARE_REGISTRY_RESOURCEID(IDR_CALCPI)

BEGIN_COM_MAP(CCalcPi)
  COM_INTERFACE_ENTRY(IAdvertiseMyself)
  COM_INTERFACE_ENTRY(ICalcPi)
  COM_INTERFACE_ENTRY(IDispatch)
  COM_INTERFACE_ENTRY(ISupportErrorInfo)
  COM_INTERFACE_ENTRY(IConnectionPointContainer)
  COM_INTERFACE_ENTRY(IPersistPropertyBag)
  COM_INTERFACE_ENTRY(IProvideClassInfo)
  COM_INTERFACE_ENTRY(IProvideClassInfo2)
	COM_INTERFACE_ENTRY(IViewObjectEx)
	COM_INTERFACE_ENTRY(IViewObject2)
	COM_INTERFACE_ENTRY(IViewObject)
	COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
	COM_INTERFACE_ENTRY(IOleInPlaceObject)
	COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
	COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
	COM_INTERFACE_ENTRY(IOleControl)
	COM_INTERFACE_ENTRY(IOleObject)
  COM_INTERFACE_ENTRY(IPersistStorage)
	COM_INTERFACE_ENTRY(IPersistStreamInit)
	COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
END_COM_MAP()
    
BEGIN_CONNECTION_POINT_MAP(CCalcPi)
  CONNECTION_POINT_ENTRY(DIID__ICalcPiEvents)
END_CONNECTION_POINT_MAP()

BEGIN_PROP_MAP(CCalcPi)
  PROP_ENTRY("Digits", 1, CLSID_NULL)
END_PROP_MAP()

BEGIN_CATEGORY_MAP(CCalcPi)
  IMPLEMENTED_CATEGORY(CATID_SafeForScripting)
  IMPLEMENTED_CATEGORY(CATID_SafeForInitializing)
END_CATEGORY_MAP()

BEGIN_MSG_MAP(CCalcPi)
	CHAIN_MSG_MAP(CComControl<CCalcPi>)
	DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
    
  // ISupportsErrorInfo
  STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
  
  // ICalcPi
public:
  STDMETHOD(CalcPi)(/*[out, retval]*/ BSTR* pbstrPi);
  STDMETHOD(get_Digits)(/*[out, retval]*/ long *pVal);
  STDMETHOD(put_Digits)(/*[in]*/ long newVal);

private:
  long m_nDigits;

public:
  BOOL m_bRequiresSave;

  // IAdvertiseMyself
  STDMETHOD(ShowAd)(BSTR bstrClient) {
    CAdvert ad;
    ad.m_bstrClient = bstrClient;
    ad.DoModal();
    return S_OK;
  }

// IViewObjectEx
	DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)

  // Draw pi
  HRESULT OnDraw(ATL_DRAWINFO& di);
};

#endif //__CALCPI_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -