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

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * IPOLY5.H
  3.  * Polyline Object Chapter 5
  4.  *
  5.  * Definition of an IPolyline interface for a Polyline object.
  6.  * This custom interface and is only supported from DLL-based
  7.  * objects.
  8.  *
  9.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  10.  *
  11.  * Kraig Brockschmidt, Microsoft
  12.  * Internet  :  kraigb@microsoft.com
  13.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  14.  */
  15. #ifndef _IPOLY5_H_
  16. #define _IPOLY5_H_
  17. //Versioning.
  18. #define VERSIONMAJOR                2
  19. #define VERSIONMINOR                0
  20. #define VERSIONCURRENT              0x00020000
  21. #define CPOLYLINEPOINTS             20
  22. //Version 2.0 Polyline Structure
  23. typedef struct tagPOLYLINEDATA
  24.     {
  25.     WORD        wVerMaj;                //Major version number
  26.     WORD        wVerMin;                //Minor version number
  27.     WORD        cPoints;                //Number of points
  28.     short       fReserved;              //Previously fDrawEntire
  29.     RECTS       rc;                     //Rectangle of figure
  30.     POINTS      rgpt[CPOLYLINEPOINTS];  //Points on 0-32767 grid
  31.     //Version 2.0 additions
  32.     COLORREF    rgbBackground;          //Background color
  33.     COLORREF    rgbLine;                //Line color
  34.     short       iLineStyle;             //Line style
  35.     } POLYLINEDATA, *PPOLYLINEDATA;
  36. #define CBPOLYLINEDATA   sizeof(POLYLINEDATA)
  37. #undef  INTERFACE
  38. #define INTERFACE IPolylineAdviseSink5
  39. /*
  40.  * When someone initializes a polyline and is interested in receiving
  41.  * notifications on events, then they provide one of these objects.
  42.  */
  43. DECLARE_INTERFACE_(IPolylineAdviseSink5, IUnknown)
  44.     {
  45.     //IUnknown members
  46.     STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  47.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  48.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  49.     //Advise members.
  50.     STDMETHOD_(void,OnPointChange)     (THIS) PURE;
  51.     STDMETHOD_(void,OnSizeChange)      (THIS) PURE;
  52.     STDMETHOD_(void,OnDataChange)      (THIS) PURE;
  53.     STDMETHOD_(void,OnColorChange)     (THIS) PURE;
  54.     STDMETHOD_(void,OnLineStyleChange) (THIS) PURE;
  55.     };
  56. typedef IPolylineAdviseSink5 *PPOLYLINEADVISESINK5;
  57. #undef  INTERFACE
  58. #define INTERFACE IPolyline5
  59. DECLARE_INTERFACE_(IPolyline5, IUnknown)
  60.     {
  61.     //IUnknown members
  62.     STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  63.     STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  64.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  65.     //IPolyline members
  66.     //File-related members:
  67.     STDMETHOD(ReadFromFile) (THIS_ LPTSTR) PURE;
  68.     STDMETHOD(WriteToFile)  (THIS_ LPTSTR) PURE;
  69.     //Data transfer members:
  70.     STDMETHOD(DataSet)      (THIS_ PPOLYLINEDATA, BOOL, BOOL) PURE;
  71.     STDMETHOD(DataGet)      (THIS_ PPOLYLINEDATA) PURE;
  72.     STDMETHOD(DataSetMem)   (THIS_ HGLOBAL, BOOL, BOOL, BOOL) PURE;
  73.     STDMETHOD(DataGetMem)   (THIS_ HGLOBAL *) PURE;
  74.     STDMETHOD(RenderBitmap) (THIS_ HBITMAP *) PURE;
  75.     STDMETHOD(RenderMetafile) (THIS_ HMETAFILE *) PURE;
  76.     STDMETHOD(RenderMetafilePict) (THIS_ HGLOBAL *) PURE;
  77.     //Manipulation members:
  78.     STDMETHOD(Init)   (THIS_ HWND, LPRECT, DWORD, UINT) PURE;
  79.     STDMETHOD(New)    (THIS) PURE;
  80.     STDMETHOD(Undo)   (THIS) PURE;
  81.     STDMETHOD(Window) (THIS_ HWND *) PURE;
  82.     STDMETHOD(RectGet) (THIS_ LPRECT) PURE;
  83.     STDMETHOD(SizeGet) (THIS_ LPRECT) PURE;
  84.     STDMETHOD(RectSet) (THIS_ LPRECT, BOOL) PURE;
  85.     STDMETHOD(SizeSet) (THIS_ LPRECT, BOOL) PURE;
  86.     STDMETHOD(ColorSet) (THIS_ UINT, COLORREF, COLORREF *) PURE;
  87.     STDMETHOD(ColorGet) (THIS_ UINT, COLORREF *) PURE;
  88.     STDMETHOD(LineStyleSet) (THIS_ UINT, UINT *) PURE;
  89.     STDMETHOD(LineStyleGet) (THIS_ UINT *) PURE;
  90.     };
  91. typedef IPolyline5 *PPOLYLINE5;
  92. //Error values for data transfer functions
  93. #define POLYLINE_E_INVALIDPOINTER   
  94.     MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 1)
  95. #define POLYLINE_E_READFAILURE      
  96.     MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 2)
  97. #define POLYLINE_E_WRITEFAILURE     
  98.     MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 3)
  99. //Color indices for color member functions
  100. #define POLYLINECOLOR_BACKGROUND    0
  101. #define POLYLINECOLOR_LINE          1
  102. #endif //_IPOLY5_H_