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

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * PAGES.H
  3.  * Patron Chapter 7
  4.  *
  5.  * Definitions and function prototypes for the Pages window control.
  6.  *
  7.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  8.  *
  9.  * Kraig Brockschmidt, Microsoft
  10.  * Internet  :  kraigb@microsoft.com
  11.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  12.  */
  13. #ifndef _PAGES_H_
  14. #define _PAGES_H_
  15. //Versioning.
  16. #define VERSIONMAJOR                2
  17. #define VERSIONMINOR                0
  18. #define VERSIONCURRENT              0x00020000
  19. //Classname
  20. #define SZCLASSPAGES                TEXT("pages")
  21. #define HIMETRIC_PER_INCH           2540
  22. #define LOMETRIC_PER_INCH           254
  23. #define LOMETRIC_BORDER             60          //Border around page
  24. //Window extra bytes and offsets
  25. #define CBPAGESWNDEXTRA             (sizeof(LONG))
  26. #define PAGEWL_STRUCTURE            0
  27. /*
  28.  * Page class describing an individual page and what things it
  29.  * contains, managing an IStorage for us.
  30.  *
  31.  * A DWORD is used to identify this page as the name of the storage
  32.  * is the string form of this ID.  If we added a page every second,
  33.  * it would take 136 years to overrun this counter, so we can
  34.  * get away with saving it persistently.  I hope this software is
  35.  * obsolete by then.
  36.  */
  37. class CPage
  38.     {
  39.     private:
  40.         DWORD       m_dwID;             //Persistent identifier
  41.         //CHAPTER7MOD
  42.         LPSTORAGE   m_pIStorage;        //Substorage for this page
  43.         //End CHAPTER7MOD
  44.     public:
  45.         CPage(DWORD);
  46.         ~CPage(void);
  47.         DWORD       GetID(void);
  48.         //CHAPTER7MOD
  49.         BOOL        Open(LPSTORAGE);
  50.         void        Close(BOOL);
  51.         BOOL        Update(void);
  52.         void        Destroy(LPSTORAGE);
  53.         UINT        GetStorageName(LPOLESTR);
  54.         //End CHAPTER7MOD
  55.     };
  56. typedef CPage *PCPage;
  57. //CHAPTER7MOD
  58. /*
  59.  * Structures to save with the document describing the device
  60.  * configuration and pages that we have. This is followed by
  61.  * a list of DWORD IDs for the individual pages.  Note that
  62.  * the strings use TCHAR as a matter of convenience, meaning
  63.  * that non-Unicode files and Unicode files will be incompatible.
  64.  * The same goes for the DEVMODE structure that we store here.
  65.  * If this were a real application that had both types of
  66.  * binaries, then this would be important, but not for this sample.
  67.  */
  68. typedef struct tagDEVICECONFIG
  69.     {
  70.     DWORD       cb;                         //Size of structure
  71.     TCHAR       szDriver[CCHDEVICENAME];
  72.     TCHAR       szDevice[CCHDEVICENAME];
  73.     TCHAR       szPort[CCHDEVICENAME];
  74.     DWORD       cbDevMode;                  //Size of actual DEVMODE
  75.     DEVMODE     dm;                         //Variable
  76.     } DEVICECONFIG, *PDEVICECONFIG;
  77. //Offset to cbDevMode
  78. #define CBSEEKOFFSETCBDEVMODE  (sizeof(DWORD)   
  79.                                +(3*CCHDEVICENAME*sizeof(TCHAR)))
  80. typedef struct tagPAGELIST
  81.     {
  82.     DWORD       cPages;
  83.     DWORD       iPageCur;
  84.     DWORD       dwIDNext;
  85.     } PAGELIST, *PPAGELIST;
  86. //End CHAPTER7MOD
  87. //PRINT.CPP
  88. BOOL    APIENTRY PrintDlgProc(HWND, UINT, WPARAM, LPARAM);
  89. BOOL    APIENTRY AbortProc(HDC, int);
  90. //PAGEWIN.CPP
  91. LRESULT APIENTRY PagesWndProc(HWND, UINT, WPARAM, LPARAM);
  92. void             RectConvertMappings(LPRECT, HDC, BOOL);
  93. class CPages : public CWindow
  94.     {
  95.     friend LRESULT APIENTRY PagesWndProc(HWND, UINT, WPARAM, LPARAM);
  96.     friend BOOL    APIENTRY PrintDlgProc(HWND, UINT, WPARAM, LPARAM);
  97.     private:
  98.         UINT        m_iPageCur;             //Current page
  99.         UINT        m_cPages;               //Number of pages
  100.         HWND        m_hWndPageList;         //Listbox with page list
  101.         HFONT       m_hFont;                //Page font
  102.         BOOL        m_fSystemFont;          //m_hFont system object?
  103.         UINT        m_cx;                   //Page size in LOMETRIC
  104.         UINT        m_cy;
  105.         UINT        m_xMarginLeft;          //Unusable margins,
  106.         UINT        m_xMarginRight;         //in LOMETRIC
  107.         UINT        m_yMarginTop;
  108.         UINT        m_yMarginBottom;
  109.         UINT        m_xPos;                 //Viewport scroll pos,
  110.         UINT        m_yPos;                 //both in *PIXELS*
  111.         DWORD       m_dwIDNext;             //Next ID for a page.
  112.         //CHAPTER7MOD
  113.         LPSTORAGE   m_pIStorage;            //Root storage
  114.         //m_hDevMode, m_szDriver, m_szDevice, m_szPort removed
  115.         //End CHAPTER7MOD
  116.     private:
  117.         void        Draw(HDC, BOOL, BOOL);
  118.         void        UpdateScrollRanges(void);
  119.         BOOL        ConfigureForDevice(void);
  120.         BOOL        PageGet(UINT, PCPage *, BOOL);
  121.         BOOL        PageAdd(UINT, DWORD, BOOL);
  122.     public:
  123.         CPages(HINSTANCE);
  124.         ~CPages(void);
  125.         BOOL        Init(HWND, LPRECT, DWORD, UINT, LPVOID);
  126.         //CHAPTER7MOD
  127.         BOOL        StorageSet(LPSTORAGE, BOOL, BOOL);
  128.         BOOL        StorageUpdate(BOOL);
  129.         //End CHAPTER7MOD
  130.         BOOL        Print(HDC, LPTSTR, DWORD, UINT, UINT, UINT);
  131.         void        RectGet(LPRECT);
  132.         void        RectSet(LPRECT, BOOL);
  133.         void        SizeGet(LPRECT);
  134.         void        SizeSet(LPRECT, BOOL);
  135.         PCPage      ActivePage(void);
  136.         UINT        PageInsert(UINT);
  137.         UINT        PageDelete(UINT);
  138.         UINT        CurPageGet(void);
  139.         UINT        CurPageSet(UINT);
  140.         UINT        NumPagesGet(void);
  141.         BOOL        DevModeSet(HGLOBAL, HGLOBAL);
  142.         HGLOBAL     DevModeGet(void);
  143.     };
  144. typedef CPages *PCPages;
  145. //CHAPTER7MOD
  146. //Fixed names of streams in the Pages IStorage
  147. #define SZSTREAMPAGELIST        OLETEXT("Page List")
  148. #define SZSTREAMDEVICECONFIG    OLETEXT("Device Configuration")
  149. //End CHAPTER7MOD
  150. #endif  //_PAGES_H_