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

Windows编程

开发平台:

Visual C++

  1. /*+==========================================================================
  2.   File:      IPAGES.H
  3.   Summary:   This is the common include file for the persistent
  4.              page-related COM Interfaces. The Interface abstract base
  5.              classes are declared.
  6.              This file is global to all the Tutorial Code Samples (kept in
  7.              the ..INC directory).  It is a good practice to factor out
  8.              Interface and GUID specifications to reduce the possibility
  9.              of GUID or interface conflicts.
  10.   Classes:   IPageList, IPageListSink, ITextPage, ITextPageSink,
  11.              IDrawPage, IDrawPageSink.
  12.   Functions: .
  13.   Origin:    5-26-97: atrent - Revised for the COM Tutorial Samples.
  14. ----------------------------------------------------------------------------
  15.   This file is part of the Microsoft COM Tutorial Code Samples.
  16.   Copyright (C) Microsoft Corporation, 1997.  All rights reserved.
  17.   This source code is intended only as a supplement to Microsoft
  18.   Development Tools and/or on-line documentation.  See these other
  19.   materials for detailed information regarding Microsoft code samples.
  20.   THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  21.   KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  22.   IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  23.   PARTICULAR PURPOSE.
  24. ==========================================================================+*/
  25. #if !defined(IPAGES_H)
  26. #define IPAGES_H
  27. #if !defined(RC_INCLUDE)
  28. // Here are the page types.
  29. #define PAGETYPE_NONE    0
  30. #define PAGETYPE_DELETED 1
  31. #define PAGETYPE_TEXT    2
  32. #define PAGETYPE_DRAWING 3
  33. // Page Open Status.
  34. #define OPENSTATE_NONE   0
  35. #define OPENSTATE_YES    1
  36. #define OPENSTATE_NO     2
  37. #define PAGE_TITLE_SIZE 64
  38. #define PAGE_NAME_SIZE 16
  39. // Strings used for assembling IStorage/IStream names.
  40. #define PAGELIST_USTR L"PageList"
  41. // Messages for posting events from page windows to main app window.
  42. #define WM_USER_PAGECHANGED WM_USER+400
  43. #define WM_USER_PAGECLOSED  WM_USER+401
  44. /*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  45.   Interface: IPageList
  46.   Summary:   Interface for page list features to manipulate the
  47.              encapsulated page list.
  48.   Methods:   Get(
  49.                  INT     iPage,
  50.                  BOOL*   pbOpened,
  51.                  SHORT*  pnType,
  52.                  WCHAR*  pwszTitle,
  53.                  WCHAR*  pwszDataName);
  54.                Get a Page List Item for a given page number. Get back
  55.                open status, page type, page title, and page data name.
  56.              Set(
  57.                  INT     iPage,
  58.                  SHORT   nOpenStatus,
  59.                  WCHAR*  pwszNewTitle);
  60.                Put a Page List Item of specified page number with new
  61.                page open status and page title.
  62.              Add(
  63.                  INT     iPage,
  64.                  SHORT   nType,
  65.                  WCHAR*  pwszTitle,
  66.                  INT*    piPage)
  67.                Add/insert a new Page List Item of specified type with
  68.                specified title.
  69.              Delete(INT  iPage);
  70.                Delete the Page List Item for the specified page number.
  71.              Clear(void);
  72.                Clear/Delete all Page List Items from the Page List.
  73. I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/
  74. DECLARE_INTERFACE_(IPageList, IUnknown)
  75. {
  76.   // IUnknown methods.
  77.   STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  78.   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  79.   STDMETHOD_(ULONG,Release) (THIS) PURE;
  80.   // IPageList methods.
  81.   STDMETHOD(Get)        (THIS_ INT, BOOL*, SHORT*, WCHAR*, WCHAR*) PURE;
  82.   STDMETHOD(Set)        (THIS_ INT, SHORT, WCHAR*) PURE;
  83.   STDMETHOD(Add)        (THIS_ INT, SHORT, WCHAR*, INT*) PURE;
  84.   STDMETHOD(Delete)     (THIS_ INT) PURE;
  85.   STDMETHOD(Clear)      (THIS) PURE;
  86. };
  87. /*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  88.   Interface: IPageListSink
  89.   Summary:   Sink Connection Interface for PageList COM Objects
  90.              that communicate events back to the client.
  91.   Methods:   Loaded
  92.                The PageList was loaded from persistent storage.
  93.              Saved
  94.                The PageList was saved to persistent storage.
  95.              Cleared
  96.                The entire PageList was cleared.
  97.              PageAdded(INT iPage);
  98.                A new PageItem was added to the PageList.
  99.              PageDeleted(INT iPage);
  100.                A PageItem was deleted from the PageList.
  101.              PageSet(INT iPage);
  102.                A PageItem entry was set with new data.
  103. I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/
  104. DECLARE_INTERFACE_(IPageListSink, IUnknown)
  105. {
  106.   // IUnknown methods.
  107.   STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  108.   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  109.   STDMETHOD_(ULONG,Release) (THIS) PURE;
  110.   // IPageListSink methods.
  111.   STDMETHOD(Loaded)      (THIS) PURE;
  112.   STDMETHOD(Saved)       (THIS) PURE;
  113.   STDMETHOD(Cleared)     (THIS) PURE;
  114.   STDMETHOD(PageAdded)   (THIS_ INT) PURE;
  115.   STDMETHOD(PageDeleted) (THIS_ INT) PURE;
  116.   STDMETHOD(PageSet)     (THIS_ INT) PURE;
  117. };
  118. /*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  119.   Interface: ITextPage
  120.   Summary:   Interface for text page features to manipulate the text
  121.              in the encapsulated text page.
  122.   Methods:   GetLength(INT*    piLength);
  123.                Get the current length (in WCHARs) of the text page.
  124.              GetText(WCHAR* pwszPageText);
  125.                Get the current page text held in this object.
  126.              PutText(WCHAR* pwszPageText, INT iLength);
  127.                Put specified wide character text of specified length
  128.                into this text page object. Does not save persistently.
  129.              Clear(BOOL bSaveNeeded);
  130.                Clears all text from the entire text page.
  131. I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/
  132. DECLARE_INTERFACE_(ITextPage, IUnknown)
  133. {
  134.   // IUnknown methods.
  135.   STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  136.   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  137.   STDMETHOD_(ULONG,Release) (THIS) PURE;
  138.   // ITextPage methods.
  139.   STDMETHOD(GetLength)  (THIS_ INT*) PURE;
  140.   STDMETHOD(GetText)    (THIS_ WCHAR*) PURE;
  141.   STDMETHOD(PutText)    (THIS_ WCHAR*, INT) PURE;
  142.   STDMETHOD(Clear)      (THIS_ BOOL) PURE;
  143. };
  144. /*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  145.   Interface: ITextPageSink
  146.   Summary:   Sink Connection Interface for TextPage COM Objects
  147.              that communicate events back to the client.
  148.   Methods:   Loaded
  149.                The TextPage was loaded from persistent stream.
  150.              Saved
  151.                The TextPage was saved to persistent stream.
  152.              Put
  153.                New text content was put into the TextPage object.
  154.              Cleared
  155.                The entire TextPage was cleared.
  156. I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/
  157. DECLARE_INTERFACE_(ITextPageSink, IUnknown)
  158. {
  159.   // IUnknown methods.
  160.   STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  161.   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  162.   STDMETHOD_(ULONG,Release) (THIS) PURE;
  163.   // ITextPageSink methods.
  164.   STDMETHOD(Loaded)      (THIS) PURE;
  165.   STDMETHOD(Saved)       (THIS) PURE;
  166.   STDMETHOD(Put)         (THIS) PURE;
  167.   STDMETHOD(Cleared)     (THIS) PURE;
  168. };
  169. /*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  170.   Interface: IDrawPage
  171.   Summary:   Interface for free-form drawing on drawing page COM Objects.
  172.   Methods:   InkStart(SHORT nX,SHORT nY,SHORT nInkWidth,COLORREF crInkColor);
  173.                Client starts color ink drawing to the drawing surface.
  174.              InkDraw(SHORT nX, SHORT nY);
  175.                Client puts ink data points on the drawing surface.
  176.              InkStop(SHORT nX, SHORT nY);
  177.                Client stops ink drawing to the drawing surface.
  178.              Clear(BOOL bSaveNeeded);
  179.                Clear the current drawing content. Notify Sinks.
  180.                Mark dirty flag if bSaveNeeded==TRUE.
  181.              Resize(SHORT nWidth, SHORT nHeight);
  182.                Resize the drawing rectangle size.
  183.              Redraw
  184.                Redraw content of drawing object via Sink notification.
  185. I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/
  186. DECLARE_INTERFACE_(IDrawPage, IUnknown)
  187. {
  188.   // IUnknown methods.
  189.   STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  190.   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  191.   STDMETHOD_(ULONG,Release) (THIS) PURE;
  192.   // IDrawPage methods.
  193.   STDMETHOD(InkStart)   (THIS_ SHORT, SHORT, SHORT, COLORREF) PURE;
  194.   STDMETHOD(InkDraw)    (THIS_ SHORT, SHORT) PURE;
  195.   STDMETHOD(InkStop)    (THIS_ SHORT, SHORT) PURE;
  196.   STDMETHOD(Clear)      (THIS_ BOOL) PURE;
  197.   STDMETHOD(Resize)     (THIS_ SHORT, SHORT) PURE;
  198.   STDMETHOD(Redraw)     (THIS) PURE;
  199. };
  200. /*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  201.   Interface: IDrawPageSink
  202.   Summary:   Sink Connection Interface for use by DrawPage COM Objects
  203.              that communicate events back to the client.
  204.   Methods:   Loaded
  205.                The DrawPage was loaded from persistent storage.
  206.              Saved
  207.                The DrawPage was saved to persistent storage.
  208.              InkStart(SHORT nX,SHORT nY,SHORT nInkWidth,COLORREF crInkColor);
  209.                A client started a color ink drawing sequence.
  210.              InkDraw(SHORT nX, SHORT nY);
  211.                A client is putting ink data points on the drawing surface.
  212.              InkStop(SHORT nX, SHORT nY);
  213.                A client stopped its ink drawing sequence.
  214.              Cleared
  215.                A client has erased/cleared the entire DrawPage.
  216.              Resized(SHORT nWidth, SHORT nHeight);
  217.                A client has resized the drawing window.
  218. I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/
  219. DECLARE_INTERFACE_(IDrawPageSink, IUnknown)
  220. {
  221.   // IUnknown methods.
  222.   STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  223.   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  224.   STDMETHOD_(ULONG,Release) (THIS) PURE;
  225.   // IDrawPageSink methods.
  226.   STDMETHOD(Loaded)      (THIS) PURE;
  227.   STDMETHOD(Saved)       (THIS) PURE;
  228.   STDMETHOD(InkStart)    (THIS_ SHORT, SHORT, SHORT, COLORREF) PURE;
  229.   STDMETHOD(InkDraw)     (THIS_ SHORT, SHORT) PURE;
  230.   STDMETHOD(InkStop)     (THIS_ SHORT, SHORT) PURE;
  231.   STDMETHOD(Cleared)     (THIS) PURE;
  232.   STDMETHOD(Resized)     (THIS_ SHORT, SHORT) PURE;
  233. };
  234. #endif // RC_INCLUDE
  235. #endif // IPAGES_H