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

Windows编程

开发平台:

Visual C++

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