home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / atl / atlfire / firetabctrl.h < prev    next >
C/C++ Source or Header  |  1998-03-26  |  6KB  |  169 lines

  1. // FireTabCtrl.h : Declaration of the CFireTabCtrl
  2. //
  3. // This is a part of the Active Template Library.
  4. // Copyright (C) 1996-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Active Template Library Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Active Template Library product.
  12.  
  13.  
  14. #ifndef __FIRETABCTRL_H_
  15. #define __FIRETABCTRL_H_
  16.  
  17. #include "resource.h"       // main symbols
  18. #include <commctrl.h>
  19. #include "FireWnd.h"
  20.  
  21. class CPropDlg;
  22.  
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CFireTabCtrl
  25. class ATL_NO_VTABLE CFireTabCtrl :
  26.     public CComObjectRootEx<CComSingleThreadModel>,
  27.     public CComCoClass<CFireTabCtrl, &CLSID_FireTabCtrl>,
  28.     public CComControl<CFireTabCtrl>,
  29.     public IDispatchImpl<IFireTabCtrl, &IID_IFireTabCtrl, &LIBID_ATLFIRELib>,
  30.     public IProvideClassInfo2Impl<&CLSID_FireTabCtrl, NULL, &LIBID_ATLFIRELib>,
  31.     public IPersistStreamInitImpl<CFireTabCtrl>,
  32.     public IPersistStorageImpl<CFireTabCtrl>,
  33.     public IPersistPropertyBagImpl<CFireTabCtrl>,
  34.     public IQuickActivateImpl<CFireTabCtrl>,
  35.     public IObjectSafetyImpl<CFireTabCtrl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>,
  36.     public IOleControlImpl<CFireTabCtrl>,
  37.     public IOleObjectImpl<CFireTabCtrl>,
  38.     public IOleInPlaceActiveObjectImpl<CFireTabCtrl>,
  39.     public IViewObjectExImpl<CFireTabCtrl>,
  40.     public IOleInPlaceObjectWindowlessImpl<CFireTabCtrl>,
  41.     public IDataObjectImpl<CFireTabCtrl>,
  42.     public ISupportErrorInfo,
  43.     public ISpecifyPropertyPagesImpl<CFireTabCtrl>,
  44.     public IConnectionPointContainerImpl<CFireTabCtrl>,
  45.     public IPropertyNotifySinkCP<CFireTabCtrl>
  46. {
  47. public:
  48.  
  49.  
  50. DECLARE_REGISTRY_RESOURCEID(IDR_FIRETABCTRL)
  51.  
  52. BEGIN_COM_MAP(CFireTabCtrl)
  53.     COM_INTERFACE_ENTRY(IFireTabCtrl)
  54.     COM_INTERFACE_ENTRY(IDispatch)
  55.     COM_INTERFACE_ENTRY_IMPL(IViewObjectEx)
  56.     COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx)
  57.     COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx)
  58.     COM_INTERFACE_ENTRY_IMPL(IOleInPlaceObjectWindowless)
  59.     COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleInPlaceObject, IOleInPlaceObjectWindowless)
  60.     COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleWindow, IOleInPlaceObjectWindowless)
  61.     COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject)
  62.     COM_INTERFACE_ENTRY_IMPL(IOleControl)
  63.     COM_INTERFACE_ENTRY_IMPL(IOleObject)
  64.     COM_INTERFACE_ENTRY_IMPL(IQuickActivate)
  65.     COM_INTERFACE_ENTRY(IObjectSafety)
  66.     COM_INTERFACE_ENTRY_IMPL(IPersistPropertyBag)
  67.     COM_INTERFACE_ENTRY_IMPL(IPersistStorage)
  68.     COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit)
  69.     COM_INTERFACE_ENTRY_IMPL(ISpecifyPropertyPages)
  70.     COM_INTERFACE_ENTRY_IMPL(IDataObject)
  71.     COM_INTERFACE_ENTRY(IProvideClassInfo)
  72.     COM_INTERFACE_ENTRY(IProvideClassInfo2)
  73.     COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
  74. END_COM_MAP()
  75.  
  76. BEGIN_PROPERTY_MAP(CFireTabCtrl)
  77.     // Example entries
  78.     // PROP_ENTRY("PropertyDescription", dispid, clsid)
  79.     PROP_ENTRY("FireDecay", 1, CLSID_FireTabCtrl)
  80.     PROP_ENTRY("FireFlammability", 2, CLSID_FireTabCtrl)
  81.     PROP_ENTRY("FireMaxHeat", 3, CLSID_FireTabCtrl)
  82.     PROP_ENTRY("FireSpreadRate", 4, CLSID_FireTabCtrl)
  83.     PROP_ENTRY("FireSize", 5, CLSID_FireTabCtrl)
  84.     PROP_ENTRY("RenderSmoothness", 6, CLSID_FireTabCtrl)
  85.     PROP_ENTRY("RenderDistribution", 7, CLSID_FireTabCtrl)
  86.     PROP_ENTRY("RenderChaos", 8, CLSID_FireTabCtrl)
  87.     PROP_ENTRY("StartTab", 9, CLSID_FireTabCtrl)
  88. END_PROPERTY_MAP()
  89.  
  90. BEGIN_CONNECTION_POINT_MAP(CFireTabCtrl)
  91.     CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
  92. END_CONNECTION_POINT_MAP()
  93.  
  94. BEGIN_MSG_MAP(CFireTabCtrl)
  95.     MESSAGE_HANDLER(WM_PAINT, OnPaint)
  96.     MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
  97.     MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
  98.     MESSAGE_HANDLER(WM_CREATE, OnCreate)
  99.     MESSAGE_HANDLER(WM_ACTIVATE, OnActivate)
  100.     MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground)
  101.     MESSAGE_HANDLER(WM_SIZE, OnSize)
  102.     NOTIFY_CODE_HANDLER(TCN_SELCHANGE, OnSelChanged)
  103. ALT_MSG_MAP(1)
  104.     MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
  105. END_MSG_MAP()
  106.  
  107.     CFireTabCtrl();
  108.     ~CFireTabCtrl();
  109.     LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  110.     LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  111.     LRESULT OnSelChanged(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  112.     LRESULT OnActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  113.     LRESULT OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  114.     LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  115.     HRESULT IOleInPlaceObject_UIDeactivate();
  116.     STDMETHOD(IOleInPlaceObject_SetObjectRects)(LPCRECT prcPos,LPCRECT prcClip);
  117.     // ISupportsErrorInfo
  118.     STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
  119.     // IViewObjectEx
  120.     STDMETHOD(GetViewStatus)(DWORD* pdwStatus);
  121.  
  122. // IFireTabCtrl
  123. public:
  124.     STDMETHOD(AboutBox)();
  125.     STDMETHOD(get_StartTab)(/*[out, retval]*/ long *pVal);
  126.     STDMETHOD(put_StartTab)(/*[in]*/ long newVal);
  127.     STDMETHOD(get_Chaos)(/*[out, retval]*/ long *pVal);
  128.     STDMETHOD(put_Chaos)(/*[in]*/ long newVal);
  129.     STDMETHOD(get_Distribution)(/*[out, retval]*/ long *pVal);
  130.     STDMETHOD(put_Distribution)(/*[in]*/ long newVal);
  131.     STDMETHOD(get_Smoothness)(/*[out, retval]*/ long *pVal);
  132.     STDMETHOD(put_Smoothness)(/*[in]*/ long newVal);
  133.     STDMETHOD(get_Size)(/*[out, retval]*/ long *pVal);
  134.     STDMETHOD(put_Size)(/*[in]*/ long newVal);
  135.     STDMETHOD(get_SpreadRate)(/*[out, retval]*/ long *pVal);
  136.     STDMETHOD(put_SpreadRate)(/*[in]*/ long newVal);
  137.     STDMETHOD(get_MaxHeat)(/*[out, retval]*/ long *pVal);
  138.     STDMETHOD(put_MaxHeat)(/*[in]*/ long newVal);
  139.     STDMETHOD(get_Flammability)(/*[out, retval]*/ long *pVal);
  140.     STDMETHOD(put_Flammability)(/*[in]*/ long newVal);
  141.     STDMETHOD(get_Decay)(/*[out, retval]*/ long *pVal);
  142.     STDMETHOD(put_Decay)(/*[in]*/ long newVal);
  143.     HRESULT OnDraw(ATL_DRAWINFO& di);
  144.  
  145. // Attributes
  146.     CContainedWindow m_ctlSysTabControl32;
  147.     CFireWnd m_Display;
  148. };
  149.  
  150.  
  151. /////////////////////////////////////////////////////////////////////////////
  152. // CPropDlg
  153. class CAboutBox :
  154.     public CDialogImpl<CAboutBox>
  155. {
  156. public:
  157.  
  158.     CAboutBox(){}
  159.  
  160.     enum { IDD = IDD_ABOUTBOX };
  161.  
  162. BEGIN_MSG_MAP(CAboutBox)
  163.     COMMAND_ID_HANDLER(IDOK, OnOK)
  164. END_MSG_MAP()
  165. LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  166.  
  167. };
  168. #endif //__FIRETABCTRL_H_
  169.