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

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * PATRON.H
  3.  * Patron Chapter 17
  4.  *
  5.  * Single include file that pulls in everything needed for other
  6.  * source files in the 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 _PATRON_H_
  15. #define _PATRON_H_
  16. #define INC_CLASSLIB
  17. #define INC_OLEUI
  18. //CHAPTER17MOD
  19. #define CHAPTER17
  20. //End CHAPTER17MOD
  21. #include <inole.h>
  22. #include "resource.h"
  23. //Get editor window information
  24. #include "pages.h"
  25. /*
  26.  * UINT value such that adding one produces zero.  Portable to Win32.
  27.  * This is used to represent a non-existent zero-based UINT value
  28.  */
  29. #define NOVALUE                     ((UINT)-1)
  30. //PATRON.CPP:  Frame object that creates a main window
  31. class CPatronFrame : public CFrame
  32.     {
  33.     private:
  34.         BOOL            m_fInitialized;     //OleInitialize worked
  35.         LPCLASSFACTORY  m_pIClassDataTran;  //For locking.
  36.     protected:
  37.         //Overridable for creating a CPatronClient
  38.         virtual PCClient    CreateCClient(void);
  39.         //CHAPTER17MOD
  40.         virtual BOOL        FMessageHook(HWND, UINT, WPARAM, LPARAM
  41.                                 , LRESULT *);
  42.         //End CHAPTER17MOD
  43.         virtual BOOL        RegisterAllClasses(void);
  44.         virtual UINT        CreateToolbar(void);
  45.         virtual LRESULT     OnCommand(HWND, WPARAM, LPARAM);
  46.     public:
  47.         CPatronFrame(HINSTANCE, HINSTANCE, LPSTR, int);
  48.         virtual ~CPatronFrame(void);
  49.         //Overrides
  50.         virtual BOOL        Init(PFRAMEINIT);
  51.         virtual void        UpdateMenus(HMENU, UINT);
  52.         virtual void        UpdateToolbar(void);
  53.     };
  54. typedef CPatronFrame *PCPatronFrame;
  55. //CLIENT.CPP
  56. /*
  57.  * The only reason we have a derived class here is to override
  58.  * CreateCDocument so we can create our own type as well as
  59.  * overriding NewDocument to perform one other piece of work once
  60.  * the document's been created.
  61.  */
  62. class CPatronClient : public CClient
  63.     {
  64.     protected:
  65.         //Overridable for creating a new CDocument
  66.         virtual PCDocument CreateCDocument(void);
  67.     public:
  68.         CPatronClient(HINSTANCE, PCFrame);
  69.         virtual ~CPatronClient(void);
  70.     };
  71. typedef CPatronClient *PCPatronClient;
  72. //DOCUMENT.CPP
  73. //Constant ID for the pages window that lives in a document window
  74. #define ID_PAGES            723
  75. class CPatronDoc : public CDocument
  76.     {
  77.     //These need access to FQueryPasteFromData, PasteFromData
  78.     friend class CDropTarget;
  79.     friend class CDropSource;
  80.     protected:
  81.         LONG            m_lVer;         //Loaded data version
  82.         PCPages         m_pPG;          //Pages window in us
  83.         LPSTORAGE       m_pIStorage;    //Root storage for document
  84.         BOOL            m_fPrintSetup;
  85.         class CDropTarget *m_pDropTarget;   //Registered target
  86.         //CHAPTER17MOD
  87.         UINT            m_cfEmbeddedObject; //Clipboard formats
  88.         UINT            m_cfObjectDescriptor;
  89.         //End CHAPTER17MOD
  90.     protected:
  91.         virtual BOOL    FMessageHook(HWND, UINT, WPARAM, LPARAM
  92.             , LRESULT *);
  93.         BOOL            FQueryPasteFromData(LPDATAOBJECT
  94.                             , LPFORMATETC, PTENANTTYPE);
  95.         //CHAPTER17MOD
  96.         BOOL            PasteFromData(LPDATAOBJECT, LPFORMATETC
  97.                             , TENANTTYPE, PPATRONOBJECT, DWORD
  98.                             , BOOL);
  99.         //End CHAPTER17MOD
  100.     public:
  101.         CPatronDoc(HINSTANCE, PCFrame, PCDocumentAdviseSink);
  102.         virtual ~CPatronDoc(void);
  103.         virtual BOOL    Init(PDOCUMENTINIT);
  104.         virtual void    Clear(void);
  105.         virtual BOOL    FDirtyGet(void);
  106.         virtual void    Delete(void);
  107.         virtual BOOL    FQueryPrinterSetup(void);
  108.         virtual BOOL    FQueryObjectSelected(HMENU);
  109.         virtual UINT    Load(BOOL, LPTSTR);
  110.         virtual UINT    Save(UINT, LPTSTR);
  111.         virtual BOOL    Print(HWND);
  112.         virtual UINT    PrinterSetup(HWND, BOOL);
  113.         virtual BOOL    Clip(HWND, BOOL);
  114.         virtual BOOL    FQueryPaste(void);
  115.         virtual BOOL    Paste(HWND);
  116.         virtual BOOL    PasteSpecial(HWND);
  117.         virtual UINT    NewPage(void);
  118.         virtual UINT    DeletePage(void);
  119.         virtual UINT    NextPage(void);
  120.         virtual UINT    PreviousPage(void);
  121.         virtual UINT    FirstPage(void);
  122.         virtual UINT    LastPage(void);
  123.         //CHAPTER17MOD
  124.         virtual void    Rename(LPTSTR);
  125.         virtual BOOL    InsertObject(HWND);
  126.         virtual void    ActivateObject(LONG);
  127.         virtual BOOL    ConvertObject(HWND);
  128.         //End CHAPTER17MOD
  129.     };
  130. typedef CPatronDoc *PCPatronDoc;
  131. //Hook for Print Dialog to hide Setup... button
  132. UINT CALLBACK PrintDlgHook(HWND, UINT, WPARAM, LPARAM);
  133. //Drag-drop objects we need in the document
  134. class CDropTarget : public IDropTarget
  135.     {
  136.     protected:
  137.         ULONG               m_cRef;
  138.         PCPatronDoc         m_pDoc;
  139.         LPDATAOBJECT        m_pIDataObject;  //From DragEnter
  140.         BOOL                m_fPendingRepaint;
  141.         POINTL              m_ptPick;        //Pick-up offsets
  142.         POINTL              m_ptLast;        //Last drag point
  143.         SIZEL               m_szl;           //Object size
  144.         BOOL                m_fFeedback;     //Draw feedback?
  145.         FORMATETC           m_fe;            //Real dropping format
  146.     public:
  147.         CDropTarget(PCPatronDoc);
  148.         ~CDropTarget(void);
  149.         //IDropTarget interface members
  150.         STDMETHODIMP QueryInterface(REFIID, PPVOID);
  151.         STDMETHODIMP_(ULONG) AddRef(void);
  152.         STDMETHODIMP_(ULONG) Release(void);
  153.         STDMETHODIMP DragEnter(LPDATAOBJECT, DWORD, POINTL,LPDWORD);
  154.         STDMETHODIMP DragOver(DWORD, POINTL, LPDWORD);
  155.         STDMETHODIMP DragLeave(void);
  156.         STDMETHODIMP Drop(LPDATAOBJECT, DWORD, POINTL, LPDWORD);
  157.     };
  158. typedef CDropTarget *PCDropTarget;
  159. class CDropSource : public IDropSource
  160.     {
  161.     protected:
  162.         ULONG               m_cRef;
  163.     public:
  164.         CDropSource(void);
  165.         ~CDropSource(void);
  166.         //IDropSource interface members
  167.         STDMETHODIMP QueryInterface(REFIID, PPVOID);
  168.         STDMETHODIMP_(ULONG) AddRef(void);
  169.         STDMETHODIMP_(ULONG) Release(void);
  170.         STDMETHODIMP QueryContinueDrag(BOOL, DWORD);
  171.         STDMETHODIMP GiveFeedback(DWORD);
  172.     };
  173. typedef CDropSource *PCDropSource;
  174. #endif //_PATRON_H_