TODOCTL.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:

Windows编程

开发平台:

Visual C++

  1. //=--------------------------------------------------------------------------=
  2. // ToDoCtl.H
  3. //=--------------------------------------------------------------------------=
  4. // Copyright 1995-1997 Microsoft Corporation.  All Rights Reserved.
  5. //
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
  7. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
  8. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
  9. // PARTICULAR PURPOSE.
  10. //=--------------------------------------------------------------------------=
  11. //
  12. // class declaration for the ToDo control.
  13. //
  14. #ifndef _TODOCTL_H_
  15. #include "IPServer.H"
  16. // DOCOBJ: include CDocObj.H for DocObjects instead of CCtrlObj.
  17. #include "CDocObj.H"                
  18. #include "ToDoSvrIfc.H"
  19. #include "Dispids.H"
  20. typedef struct tagTODOCTLSTATE {
  21.     // TODO: put state variables here, and probably get rid of fGarbage, unless
  22.     // you have a real need for it
  23.     //
  24.     VARIANT_BOOL fGarbage;
  25. } TODOCTLSTATE;
  26. //=--------------------------------------------------------------------------=
  27. // CToDoControl
  28. //=--------------------------------------------------------------------------=
  29. // our control.
  30. //
  31. // DOCOBJ: use CDocumentObject as the base class instead of COleControl or 
  32. //         CInternetControl
  33. //
  34. class CToDoControl : public CDocumentObject, public IToDo, public ISupportErrorInfo {
  35.   public:
  36.     // IUnknown methods
  37.     //
  38.     DECLARE_STANDARD_UNKNOWN();
  39.     // IDispatch methods
  40.     //
  41.     DECLARE_STANDARD_DISPATCH();
  42.     // ISupportErrorInfo methods
  43.     //
  44.     DECLARE_STANDARD_SUPPORTERRORINFO();
  45.     // IToDo methods
  46.     //
  47.     // TODO: copy over the method declarations from ToDoInterfaces.H
  48.     //       don't forget to remove the PURE from them.
  49.     //
  50.     STDMETHOD_(void, AboutBox)(THIS);
  51.     // OLE Control stuff follows:
  52.     //
  53.     CToDoControl(IUnknown *pUnkOuter);
  54.     virtual ~CToDoControl();
  55.     // static creation function.  all controls must have one of these!
  56.     //
  57.     static IUnknown *Create(IUnknown *);
  58.   private:
  59.     // overridables that the control must implement.
  60.     //
  61.     STDMETHOD(LoadBinaryState)(IStream *pStream);
  62.     STDMETHOD(SaveBinaryState)(IStream *pStream);
  63.     STDMETHOD(LoadTextState)(IPropertyBag *pPropertyBag, IErrorLog *pErrorLog);
  64.     STDMETHOD(SaveTextState)(IPropertyBag *pPropertyBag, BOOL fWriteDefault);
  65.     STDMETHOD(OnDraw)(DWORD dvAspect, HDC hdcDraw, LPCRECTL prcBounds, LPCRECTL prcWBounds, HDC hicTargetDev, BOOL fOptimize);
  66.     virtual LRESULT WindowProc(UINT msg, WPARAM wParam, LPARAM lParam);
  67.     virtual BOOL    RegisterClassData(void);
  68.     virtual HRESULT InternalQueryInterface(REFIID, void **);
  69.     virtual BOOL    BeforeCreateWindow(DWORD *pdwWindowStyle, DWORD *pdwExWindowStyle, LPSTR pszWindowTitle);
  70.     // private state information.
  71.     //
  72.     TODOCTLSTATE m_state;
  73. };
  74. // TODO: if you have an array of verbs, then add an extern here with the name
  75. //       of it, so that you can include it in the DEFINE_DOCOBJECT.
  76. //       ie.  extern VERBINFO m_ToDoCustomVerbs [];
  77. //
  78. extern const GUID    *rgToDoPropPages [];
  79. // DOCOBJ: Use DEFINE_DOCOBJECT macro instead of DEFIND_CONTROL macro to 
  80. //         set up information about the DocObject. The last 4 items are 
  81. //         specific to DocObjects.
  82. //
  83. DEFINE_DOCOBJECT(ToDo,
  84.     &CLSID_ToDo,
  85.     "ToDoCtl",
  86.     CToDoControl::Create,
  87.     1,
  88.     &IID_IToDo,
  89.     "ToDo.HLP",
  90.     &DIID_DToDoEvents,
  91.     OLEMISC_SETCLIENTSITEFIRST|OLEMISC_ACTIVATEWHENVISIBLE|OLEMISC_RECOMPOSEONRESIZE|OLEMISC_CANTLINKINSIDE|OLEMISC_INSIDEOUT,
  92.     0,
  93.     RESID_TOOLBOX_BITMAP,
  94.     "ToDoWndClass",
  95.     1,
  96.     rgToDoPropPages,
  97.     0,
  98.     NULL,
  99.     DOCMISC_CANTOPENEDIT|DOCMISC_NOFILESUPPORT,     // dwDocMiscStatus
  100.     FALSE,                                          // no IPrint support
  101.     IDS_DEFAULTEXT,                                 // resource ID of default file extension
  102.     IDS_FILEDESCRIPTION,                            // resource ID of file description
  103.     );
  104. #define _TODOCTL_H_
  105. #endif // _TODOCTL_H_