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

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * COSMO.H
  3.  * Cosmo Chapter 23
  4.  *
  5.  * Single include file that pulls in everything needed for other
  6.  * source files in the Cosmo application.
  7.  *
  8.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  9.  *
  10.  * Kraig Brockschmidt, Microsoft
  11.  * Internet  :  kraigb@microsoft.com
  12.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  13.  */
  14. #ifndef _COSMO_H_
  15. #define _COSMO_H_
  16. #define INC_CLASSLIB
  17. #define INC_OLE2UI
  18. //CHAPTER23MOD
  19. #define CHAPTER23
  20. //End CHAPTER23MOD
  21. #include <inole.h>
  22. #include "resource.h"
  23. //Get the editor window information.
  24. #include "polyline.h"
  25. //COSMO.CPP:  Frame object that creates a main window
  26. class CCosmoFrame : public CFrame
  27.     {
  28.     friend class CFigureClassFactory;
  29.     friend class CFigure;   //For UI purposes.
  30.     private:
  31.         HBITMAP         m_hBmpLines[5];     //Menu item bitmaps
  32.         UINT            m_uIDCurLine;       //Current line selection
  33.         BOOL            m_fInitialized;     //Did OleInitalize work?
  34.         LPCLASSFACTORY  m_pIClassDataTran;  //For locking
  35.         BOOL            m_fEmbedding;       //-Embedding found?
  36.         DWORD           m_dwRegCO;          //Registration key
  37.         LPCLASSFACTORY  m_pIClassFactory;
  38.         //CHAPTER23MOD
  39.         OLEINPLACEFRAMEINFO     m_frameInfo;    //Container's stuff.
  40.         LPOLEINPLACEFRAME       m_pIOleIPFrame; //Copy of CFigure's
  41.         //End CHAPTER23MOD
  42.     protected:
  43.         //CHAPTER23MOD
  44.         BOOL      FMessageHook(HWND, UINT, WPARAM, LPARAM
  45.                       , LRESULT *);
  46.         //End CHAPTER23MOD
  47.         //Overridable for creating a CClient for this frame
  48.         virtual PCClient  CreateCClient(void);
  49.         virtual BOOL      RegisterAllClasses(void);
  50.         virtual BOOL      PreShowInit(void);
  51.         virtual UINT      CreateToolbar(void);
  52.         virtual LRESULT   OnCommand(HWND, WPARAM, LPARAM);
  53.         virtual void      OnDocumentDataChange(PCDocument);
  54.         virtual void      OnDocumentActivate(PCDocument);
  55.         //New for this class
  56.         virtual void      CreateLineMenu(void);
  57.     public:
  58.         CCosmoFrame(HINSTANCE, HINSTANCE, LPSTR, int);
  59.         virtual ~CCosmoFrame(void);
  60.         //Overrides
  61.         virtual BOOL      Init(PFRAMEINIT);
  62.         //CHAPTER23MOD
  63.         virtual  WPARAM   MessageLoop(void);
  64.         //End CHAPTER23MOD
  65.         virtual void      UpdateMenus(HMENU, UINT);
  66.         virtual void      UpdateToolbar(void);
  67.         //New for this class
  68.         virtual void      CheckLineSelection(UINT);
  69.         virtual void      UpdateEmbeddingUI(BOOL, PCDocument
  70.                               , LPCTSTR, LPCTSTR);
  71.     };
  72. typedef CCosmoFrame *PCCosmoFrame;
  73. //CLIENT.CPP
  74. /*
  75.  * The only reason we have a derived class here is to override
  76.  * CreateCDocument so we can create our own type as well as
  77.  * overriding NewDocument to perform one other piece of work once
  78.  * the document's been created.
  79.  */
  80. class CCosmoClient : public CClient
  81.     {
  82.     protected:
  83.         //Overridable for creating a new CDocument
  84.         virtual PCDocument CreateCDocument(void);
  85.     public:
  86.         CCosmoClient(HINSTANCE, PCFrame);
  87.         virtual ~CCosmoClient(void);
  88.         virtual PCDocument NewDocument(BOOL);
  89.     };
  90. typedef CCosmoClient *PCCosmoClient;
  91. //DOCUMENT.CPP
  92. //Constant ID for the window polyline that lives in a document
  93. #define ID_POLYLINE         10
  94. class CCosmoDoc : public CDocument
  95.     {
  96.     friend class CPolylineAdviseSink;
  97.     //These need access to FQueryPasteFromData, PasteFromData
  98.     friend class CDropTarget;
  99.     friend class CDropSource;
  100.     friend class CFigureClassFactory;
  101.     friend class CFigure;
  102.     protected:
  103.         UINT                    m_uPrevSize;    //Last WM_SIZE wParam
  104.         LONG                    m_lVer;         //Loaded Polyline ver
  105.         PCPolyline              m_pPL;          //Polyline window here
  106.         PCPolylineAdviseSink    m_pPLAdv;       //Advises from Polyline
  107.         class CDropTarget      *m_pDropTarget;  //Registered target
  108.         BOOL                    m_fDragSource;  //Source==target?
  109.         UINT                    m_cfEmbedSource;
  110.         UINT                    m_cfObjectDescriptor;
  111.         class CFigure          *m_pFigure;      //The object in us.
  112.         LPMONIKER               m_pMoniker;     //Our file
  113.         DWORD                   m_dwRegROT;     //From IROT::Register
  114.         UINT                    m_cfLinkSource;
  115.         UINT                    m_cfLinkSrcDescriptor;
  116.     protected:
  117.         virtual BOOL     FMessageHook(HWND, UINT, WPARAM, LPARAM
  118.             , LRESULT *);
  119.         void             DropSelectTargetWindow(void);
  120.     public:
  121.         CCosmoDoc(HINSTANCE, PCFrame, PCDocumentAdviseSink);
  122.         virtual ~CCosmoDoc(void);
  123.         virtual BOOL     Init(PDOCUMENTINIT);
  124.         virtual void     Clear(void);
  125.         virtual BOOL     FDirtySet(BOOL);
  126.         virtual BOOL     FDirtyGet(void);
  127.         virtual UINT     Load(BOOL, LPTSTR);
  128.         virtual UINT     Save(UINT, LPTSTR);
  129.         virtual void     Rename(LPTSTR);
  130.         virtual void     Undo(void);
  131.         virtual BOOL     Clip(HWND, BOOL);
  132.         virtual HGLOBAL  RenderFormat(UINT);
  133.         virtual BOOL     RenderMedium(UINT, LPSTGMEDIUM);
  134.         virtual BOOL     FQueryPaste(void);
  135.         virtual BOOL     Paste(HWND);
  136.         //These were protected.  Now for IOleObject, should be public.
  137.         virtual BOOL     FQueryPasteFromData(LPDATAOBJECT);
  138.         virtual BOOL     PasteFromData(LPDATAOBJECT);
  139.         LPDATAOBJECT     TransferObjectCreate(BOOL);
  140.         //CHAPTER23MOD
  141.         void             OpenInPlaceObject(void);
  142.         //End CHAPTER23MOD
  143.         virtual COLORREF ColorSet(UINT, COLORREF);
  144.         virtual COLORREF ColorGet(UINT);
  145.         virtual UINT     LineStyleSet(UINT);
  146.         virtual UINT     LineStyleGet(void);
  147.     };
  148. typedef CCosmoDoc *PCCosmoDoc;
  149. //These color indices wrap the polyline definitions
  150. #define DOCCOLOR_BACKGROUND             POLYLINECOLOR_BACKGROUND
  151. #define DOCCOLOR_LINE                   POLYLINECOLOR_LINE
  152. //Drag-drop interfaces we need in the document
  153. class CDropTarget : public IDropTarget
  154.     {
  155.     protected:
  156.         ULONG               m_cRef;
  157.         PCCosmoDoc          m_pDoc;
  158.         LPDATAOBJECT        m_pIDataObject;     //From DragEnter
  159.     public:
  160.         CDropTarget(PCCosmoDoc);
  161.         ~CDropTarget(void);
  162.         //IDropTarget interface members
  163.         STDMETHODIMP QueryInterface(REFIID, PPVOID);
  164.         STDMETHODIMP_(ULONG) AddRef(void);
  165.         STDMETHODIMP_(ULONG) Release(void);
  166.         STDMETHODIMP DragEnter(LPDATAOBJECT, DWORD, POINTL, LPDWORD);
  167.         STDMETHODIMP DragOver(DWORD, POINTL, LPDWORD);
  168.         STDMETHODIMP DragLeave(void);
  169.         STDMETHODIMP Drop(LPDATAOBJECT, DWORD, POINTL, LPDWORD);
  170.     };
  171. typedef CDropTarget *PCDropTarget;
  172. class CDropSource : public IDropSource
  173.     {
  174.     protected:
  175.         ULONG               m_cRef;
  176.         PCCosmoDoc          m_pDoc;
  177.     public:
  178.         CDropSource(PCCosmoDoc);
  179.         ~CDropSource(void);
  180.         //IDropSource interface members
  181.         STDMETHODIMP QueryInterface(REFIID, PPVOID);
  182.         STDMETHODIMP_(ULONG) AddRef(void);
  183.         STDMETHODIMP_(ULONG) Release(void);
  184.         STDMETHODIMP QueryContinueDrag(BOOL, DWORD);
  185.         STDMETHODIMP GiveFeedback(DWORD);
  186.     };
  187. typedef CDropSource *PCDropSource;
  188. //Include classes necessary to become an OLE Document server.
  189. #include "cosmole.h"
  190. #endif //_COSMO_H_