rmawin.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:20k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: rmawin.h,v 1.1 2003/05/30 02:18:02 gabest Exp $
  4.  *  
  5.  *  Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
  6.  *
  7.  *  http://www.real.com/devzone
  8.  *
  9.  *  This program contains proprietary 
  10.  *  information of Progressive Networks, Inc, and is licensed
  11.  *  subject to restrictions on use and distribution.
  12.  *
  13.  *
  14.  *  RealMedia Architecture Simple Window Interfaces.
  15.  *
  16.  */
  17. #ifndef _RMAWIN_H_
  18. #define _RMAWIN_H_
  19. /*
  20.  * Forward declarations of some interfaces defined or used here-in.
  21.  */
  22. typedef _INTERFACE IRMASite IRMASite;
  23. typedef _INTERFACE IRMASiteUser IRMASiteUser;
  24. typedef _INTERFACE IRMASiteWindowed IRMASiteWindowed;
  25. typedef _INTERFACE IRMASiteEventHandler            IRMASiteEventHandler;
  26. typedef _INTERFACE IRMASiteWindowless IRMASiteWindowless;
  27. typedef _INTERFACE IRMASiteWatcher IRMASiteWatcher;
  28. typedef _INTERFACE IRMAValues IRMAValues;
  29. typedef _INTERFACE IRMASiteFullScreen IRMASiteFullScreen;
  30. typedef _INTERFACE IRMALayoutSiteGroupManager IRMALayoutSiteGroupManager;
  31. typedef _INTERFACE IRMAEventHook IRMAEventHook;
  32. typedef struct _PNxWindow   PNxWindow;
  33. typedef struct _PNxSize     PNxSize;
  34. typedef struct _PNxPoint    PNxPoint;
  35. typedef struct _PNxRect     PNxRect;
  36. typedef void* PNxRegion;
  37. /****************************************************************************
  38.  * 
  39.  *  Interface:
  40.  *
  41.  * IRMASiteWindowed
  42.  *
  43.  *  Purpose:
  44.  *
  45.  * Interface for IRMASite objects which are associated with platform
  46.  * specific window objects on Microsoft Windows and X-Windows.
  47.  *
  48.  *  IID_IRMASiteWindowed:
  49.  *
  50.  * {00000D01-0901-11d1-8B06-00A024406D59}
  51.  *
  52.  */
  53. DEFINE_GUID(IID_IRMASiteWindowed, 0x00000D01, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  54. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  55. #define CLSID_IRMASiteWindowed IID_IRMASiteWindowed
  56. #undef  INTERFACE
  57. #define INTERFACE   IRMASiteWindowed
  58. DECLARE_INTERFACE_(IRMASiteWindowed, IUnknown)
  59. {
  60.     /*
  61.      * IUnknown methods
  62.      */
  63.     STDMETHOD(QueryInterface) (THIS_
  64. REFIID riid,
  65. void** ppvObj) PURE;
  66.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  67.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  68.     /*
  69.      * IRMASiteWindowed methods called by site suppliers 
  70.      * when they want the site associated with a
  71.      * previously created (and externally managed) window.
  72.      * This method will "sub-class" that window (Win32).
  73.      * On Unix, the site supplier must pass events from 
  74.      * the externally managed window to the core via
  75.      * IRMAClientEngine::EventOccurred(). Please note that
  76.      * The PNxWindow ptr must remain in scope for the life
  77.      * of Site.
  78.      * 
  79.      */
  80.     STDMETHOD(AttachWindow) (THIS_
  81. PNxWindow* /*IN*/ pWindow) PURE;
  82.     STDMETHOD(DetachWindow) (THIS) PURE;
  83.     /*
  84.      * IRMASiteWindowed methods called by Owners of the site
  85.      * in the event that want a default top level window created
  86.      * for the site.
  87.      */
  88.     STDMETHOD(Create) (THIS_
  89. void* ParentWindow, 
  90. UINT32 style) PURE;
  91.     STDMETHOD(Destroy) (THIS) PURE;
  92.     /*
  93.      * IRMASiteWindowed method. Returns actual window of the site.
  94.      */
  95.     STDMETHOD_(PNxWindow*,GetWindow)(THIS) PURE;
  96. };
  97. /****************************************************************************
  98.  * 
  99.  *  Interface:
  100.  *
  101.  * IRMASiteWindowless
  102.  *
  103.  *  Purpose:
  104.  *
  105.  * Interface for IRMASite objects which are "windowless" or not 
  106.  * associated with platform specific window objects.
  107.  *
  108.  *  IID_IRMASiteWindowless:
  109.  *
  110.  * {00000D02-0901-11d1-8B06-00A024406D59}
  111.  *
  112.  */
  113. DEFINE_GUID(IID_IRMASiteWindowless, 0x00000D02, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  114. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  115. #undef  INTERFACE
  116. #define INTERFACE   IRMASiteWindowless
  117. #define CLSID_IRMASiteWindowless IID_IRMASiteWindowless
  118. DECLARE_INTERFACE_(IRMASiteWindowless, IUnknown)
  119. {
  120.     /*
  121.      * IUnknown methods
  122.      */
  123.     STDMETHOD(QueryInterface) (THIS_
  124. REFIID riid,
  125. void** ppvObj) PURE;
  126.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  127.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  128.     /*
  129.      * IRMASiteWindowless methods called by owners of the site.
  130.      */
  131.     STDMETHOD(EventOccurred) (THIS_
  132. PNxEvent* /*IN*/ pEvent) PURE;
  133.     /*
  134.      * IRMASiteWindowless method. Returns some parent window that
  135.      * owns the windowless site. Useful for right-click menus and
  136.      * dialog box calls.
  137.      */
  138.     STDMETHOD_(PNxWindow*,GetParentWindow)(THIS) PURE;
  139. };
  140. /****************************************************************************
  141.  * 
  142.  *  Interface:
  143.  *
  144.  * IRMASite
  145.  *
  146.  *  Purpose:
  147.  *
  148.  * Interface for IRMASite objects.
  149.  *
  150.  *  IID_IRMASite:
  151.  *
  152.  * {00000D03-0901-11d1-8B06-00A024406D59}
  153.  *
  154.  */
  155. DEFINE_GUID(IID_IRMASite, 0x00000D03, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  156. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  157. #undef  INTERFACE
  158. #define INTERFACE   IRMASite
  159. DECLARE_INTERFACE_(IRMASite, IUnknown)
  160. {
  161.     /*
  162.      * IUnknown methods
  163.      */
  164.     STDMETHOD(QueryInterface) (THIS_
  165. REFIID riid,
  166. void** ppvObj) PURE;
  167.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  168.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  169.     /*
  170.      * IRMASite methods usually called by the "context" to 
  171.      * associate users with the site, and to create child sites
  172.      * as appropriate.
  173.      */
  174.     STDMETHOD(AttachUser) (THIS_
  175. IRMASiteUser* /*IN*/ pUser) PURE;
  176.     STDMETHOD(DetachUser) (THIS) PURE;
  177.     STDMETHOD(GetUser) (THIS_
  178. REF(IRMASiteUser*) /*OUT*/ pUser) PURE;
  179.     STDMETHOD(CreateChild) (THIS_
  180. REF(IRMASite*) /*OUT*/ pChildSite) PURE;
  181.     STDMETHOD(DestroyChild) (THIS_
  182. IRMASite* /*IN*/ pChildSite) PURE;
  183.     /*
  184.      * IRMASite methods called by the the "context" in which the site
  185.      * is displayed in order to manage its position. Site users should
  186.      * not generally call these methods.
  187.      */
  188.     STDMETHOD(AttachWatcher) (THIS_
  189. IRMASiteWatcher* /*IN*/ pWatcher) PURE;
  190.     STDMETHOD(DetachWatcher) (THIS) PURE;
  191.     STDMETHOD(SetPosition) (THIS_
  192. PNxPoint position) PURE;
  193.     STDMETHOD(GetPosition) (THIS_
  194. REF(PNxPoint) position) PURE;
  195.     /*
  196.      * IRMASite methods called by the user of the site to get
  197.      * information about the site, and to manipulate the site.
  198.      */
  199.     STDMETHOD(SetSize) (THIS_
  200. PNxSize size) PURE;
  201.     STDMETHOD(GetSize) (THIS_
  202. REF(PNxSize) size) PURE;
  203.     STDMETHOD(DamageRect) (THIS_
  204. PNxRect rect) PURE;
  205.     STDMETHOD(DamageRegion) (THIS_
  206. PNxRegion region) PURE;
  207.     STDMETHOD(ForceRedraw) (THIS) PURE;
  208. };
  209. /****************************************************************************
  210.  * 
  211.  *  Interface:
  212.  *
  213.  * IRMASiteUser
  214.  *
  215.  *  Purpose:
  216.  *
  217.  * Interface for the user of the IRMASite objects.
  218.  *
  219.  *  IID_IRMASiteUser:
  220.  *
  221.  * {00000D04-0901-11d1-8B06-00A024406D59}
  222.  *
  223.  */
  224. DEFINE_GUID(IID_IRMASiteUser, 0x00000D04, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  225. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  226. #undef  INTERFACE
  227. #define INTERFACE   IRMASiteUser
  228. DECLARE_INTERFACE_(IRMASiteUser, IUnknown)
  229. {
  230.     /*
  231.      * IUnknown methods
  232.      */
  233.     STDMETHOD(QueryInterface) (THIS_
  234. REFIID riid,
  235. void** ppvObj) PURE;
  236.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  237.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  238.     /*
  239.      * IRMASiteUser methods usually called by the "context" to 
  240.      * associate users with the site.
  241.      */
  242.     STDMETHOD(AttachSite) (THIS_
  243. IRMASite* /*IN*/ pSite) PURE;
  244.     STDMETHOD(DetachSite) (THIS) PURE;
  245.     /*
  246.      * IRMASiteUser methods called to inform user of an event.
  247.      */
  248.     STDMETHOD(HandleEvent) (THIS_
  249. PNxEvent* /*IN*/ pEvent) PURE;
  250.     STDMETHOD_(BOOL,NeedsWindowedSites) (THIS) PURE;
  251. };
  252. /****************************************************************************
  253.  * 
  254.  *  Interface:
  255.  *
  256.  * IRMASiteWatcher
  257.  *
  258.  *  Purpose:
  259.  *
  260.  * Interface for IRMASiteWatcher objects.
  261.  *
  262.  *  IID_IRMASite:
  263.  *
  264.  * {00000D05-0901-11d1-8B06-00A024406D59}
  265.  *
  266.  */
  267. DEFINE_GUID(IID_IRMASiteWatcher, 0x00000D05, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  268. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  269. #undef  INTERFACE
  270. #define INTERFACE   IRMASiteWatcher
  271. DECLARE_INTERFACE_(IRMASiteWatcher, IUnknown)
  272. {
  273.     /*
  274.      * IUnknown methods
  275.      */
  276.     STDMETHOD(QueryInterface) (THIS_
  277. REFIID riid,
  278. void** ppvObj) PURE;
  279.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  280.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  281.     /*
  282.      * IRMASiteWatcher methods called by the site when a watcher 
  283.      * is attached to or detached from it.
  284.      */
  285.     STDMETHOD(AttachSite) (THIS_
  286. IRMASite* /*IN*/ pSite) PURE;
  287.     STDMETHOD(DetachSite) (THIS) PURE;
  288.     /*
  289.      * IRMASiteWatcher methods called by the site an attempt is
  290.      * made to change it's position or size. The site watcher must
  291.      * return PNR_OK for the change to occur. If the site watcher
  292.      * returns any value other than PNR_OK then the size or position
  293.      * will not change. The site watcher can also modify the new
  294.      * size of position.
  295.      */
  296.     STDMETHOD(ChangingPosition) (THIS_
  297. PNxPoint posOld,
  298. REF(PNxPoint)/*IN-OUT*/ posNew) PURE;
  299.     STDMETHOD(ChangingSize) (THIS_
  300. PNxSize sizeOld,
  301. REF(PNxSize) /*IN-OUT*/ sizeNew) PURE;
  302. };
  303. /****************************************************************************
  304.  * 
  305.  *  Interface:
  306.  *
  307.  * IRMASiteUserSupplier
  308.  *
  309.  *  Purpose:
  310.  *
  311.  * Interface implemented by renderers and objects with provide layouts to
  312.  * the client core. This interface is called by the core when it needs a 
  313.  * new IRMASiteUser, or when it is done using an IRMASiteUser.
  314.  *
  315.  *  IID_IRMASiteUserSupplier:
  316.  *
  317.  * {00000D06-0901-11d1-8B06-00A024406D59}
  318.  *
  319.  */
  320. DEFINE_GUID(IID_IRMASiteUserSupplier, 0x00000D06, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  321. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  322. #undef  INTERFACE
  323. #define INTERFACE   IRMASiteUserSupplier
  324. DECLARE_INTERFACE_(IRMASiteUserSupplier, IUnknown)
  325. {
  326.     /*
  327.      * IUnknown methods
  328.      */
  329.     STDMETHOD(QueryInterface) (THIS_
  330. REFIID riid,
  331. void** ppvObj) PURE;
  332.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  333.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  334.     /*
  335.      * IRMASiteUserSupplier methods usually called by the 
  336.      * "context" to ask for additional or to release previously
  337.      * created site users.
  338.      */
  339.     STDMETHOD(CreateSiteUser) (THIS_
  340. REF(IRMASiteUser*)/*OUT*/ pSiteUser) PURE;
  341.     STDMETHOD(DestroySiteUser) (THIS_
  342. IRMASiteUser*   /*IN*/ pSiteUser) PURE;
  343.     STDMETHOD_(BOOL,NeedsWindowedSites) (THIS) PURE;
  344. };
  345. /****************************************************************************
  346.  * 
  347.  *  Interface:
  348.  *
  349.  * IRMASiteSupplier
  350.  *
  351.  *  Purpose:
  352.  *
  353.  * Interface implemented by users of the client core. This interface is
  354.  * called by the core when it needs a new IRMASite, or when it is done
  355.  * using an IRMASite.
  356.  *
  357.  *  IID_IRMASiteSupplier:
  358.  *
  359.  * {00000D07-0901-11d1-8B06-00A024406D59}
  360.  *
  361.  */
  362. DEFINE_GUID(IID_IRMASiteSupplier, 0x00000D07, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  363. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  364. #undef  INTERFACE
  365. #define INTERFACE   IRMASiteSupplier
  366. DECLARE_INTERFACE_(IRMASiteSupplier, IUnknown)
  367. {
  368.     /*
  369.      * IUnknown methods
  370.      */
  371.     STDMETHOD(QueryInterface) (THIS_
  372. REFIID riid,
  373. void** ppvObj) PURE;
  374.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  375.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  376.     /*
  377.      * IRMASiteSupplier methods
  378.      */
  379.     /************************************************************************
  380.      * Method:
  381.      *     IRMASiteSupplier::SitesNeeded
  382.      * Purpose:
  383.      *   Called to inform the site supplier that a site with a particular
  384.      *   set of characteristics is needed. If the site supplier can 
  385.      *   fulfill the request it should call the site manager and add one
  386.      *   or more new sites.
  387.      *    Note that the request for sites is associated with a Request ID
  388.      *    the client core will inform the site supplier when this requested
  389.      *    site is no longer needed.
  390.      */
  391.     STDMETHOD(SitesNeeded) (THIS_
  392. UINT32 uReqestID,
  393. IRMAValues* pSiteProps) PURE;
  394.     /************************************************************************
  395.      *  Method:
  396.      *    IRMASiteSupplier::SitesNotNeeded
  397.      *  Purpose:
  398.      *    Called to inform the site supplier that all sites from a previos
  399.      *   site request are no longer needed. If the site supplier had 
  400.      *   previously created non-persistant sites (like popup windows)
  401.      *    to fulfill a request for sites it should call the site manager 
  402.      *    and remove those sites.
  403.      */
  404.     STDMETHOD(SitesNotNeeded) (THIS_
  405. UINT32 uReqestID) PURE;
  406.     /************************************************************************
  407.      *  Method:
  408.      *    IRMASiteSupplier::BeginChangeLayout
  409.      *  Purpose:
  410.      *    Called to inform the site supplier a layout change has beginning
  411.      *   it can expect to recieve SitesNeeded() and SitesNotNeeded() calls
  412.      *   while a layout change is in progress,
  413.      */
  414.     STDMETHOD(BeginChangeLayout) (THIS) PURE;
  415.     /************************************************************************
  416.      *  Method:
  417.      *    IRMASiteSupplier::DoneChangeLayout
  418.      *  Purpose:
  419.      *    Called to inform the site supplier the layout change has been
  420.      *   completed.
  421.      */
  422.     STDMETHOD(DoneChangeLayout) (THIS) PURE;
  423. };
  424. /****************************************************************************
  425.  * 
  426.  *  Interface:
  427.  *
  428.  * IRMASiteManager
  429.  *
  430.  *  Purpose:
  431.  *
  432.  * Interface implemented by the client core. This interface is called
  433.  * by users of the client core to inform it of IRMASite's which are
  434.  * available for layout of renderers
  435.  *
  436.  *  IID_IRMASiteManager:
  437.  *
  438.  * {00000D08-0901-11d1-8B06-00A024406D59}
  439.  *
  440.  */
  441. DEFINE_GUID(IID_IRMASiteManager, 0x00000D08, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  442. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  443. #undef  INTERFACE
  444. #define INTERFACE   IRMASiteManager
  445. DECLARE_INTERFACE_(IRMASiteManager, IUnknown)
  446. {
  447.     /*
  448.      * IUnknown methods
  449.      */
  450.     STDMETHOD(QueryInterface) (THIS_
  451. REFIID riid,
  452. void** ppvObj) PURE;
  453.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  454.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  455.     /*
  456.      * IRMASiteManager methods
  457.      */
  458.     /************************************************************************
  459.      * Method:
  460.      *     IRMASiteManager::AddSite
  461.      * Purpose:
  462.      *   Called to inform the site manager of the existance of a site.
  463.      */
  464.     STDMETHOD(AddSite) (THIS_
  465. IRMASite* pSite) PURE;
  466.     /************************************************************************
  467.      * Method:
  468.      *     IRMASiteManager::RemoveSite
  469.      * Purpose:
  470.      *   Called to inform the site manager that a site is no longer 
  471.      *   available.
  472.      */
  473.     STDMETHOD(RemoveSite) (THIS_
  474. IRMASite* pSite) PURE;
  475. };
  476. /****************************************************************************
  477.  * 
  478.  *  Interface:
  479.  *
  480.  * IRMAMultiInstanceSiteUserSupplier
  481.  *
  482.  *  Purpose:
  483.  *
  484.  * This is the interface for a special default object which is available
  485.  * from the common class factory. This object will act as a site user 
  486.  * supplier for any renderer (or other site user object) that wants
  487.  * default support for multiple instances. The site user must work as
  488.  * a windowless site for this default implementation to work. The 
  489.  * default object also implements the IRMASite interfave to allow
  490.  * the site user object to control all the sites through a single 
  491.  * interface instance.
  492.  *
  493.  *  IID_IRMAMultiInstanceSiteUserSupplier:
  494.  *
  495.  * {00000D09-0901-11d1-8B06-00A024406D59}
  496.  *
  497.  */
  498. DEFINE_GUID(IID_IRMAMultiInstanceSiteUserSupplier, 0x00000D09, 0x901, 
  499.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  500. #define CLSID_IRMAMultiInstanceSiteUserSupplier
  501. IID_IRMAMultiInstanceSiteUserSupplier
  502. #undef  INTERFACE
  503. #define INTERFACE   IRMAMultiInstanceSiteUserSupplier
  504. DECLARE_INTERFACE_(IRMAMultiInstanceSiteUserSupplier, IUnknown)
  505. {
  506.     /*
  507.      * IUnknown methods
  508.      */
  509.     STDMETHOD(QueryInterface) (THIS_
  510. REFIID riid,
  511. void** ppvObj) PURE;
  512.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  513.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  514.     /*
  515.      * IRMAMultiInstanceSiteUserSupplier methods called by site users.
  516.      */
  517.     STDMETHOD(SetSingleSiteUser) (THIS_ 
  518. IUnknown* pUnknown) PURE;
  519.     STDMETHOD(ReleaseSingleSiteUser) (THIS) PURE;
  520. };
  521. /****************************************************************************
  522.  * 
  523.  *  Interface:
  524.  * IRMASiteFullScreen
  525.  *
  526.  *  Purpose:
  527.  *
  528.  * This is the interface for turning on/off the full screen mode
  529.  *
  530.  *  IID_IRMASiteFullScreen:
  531.  *
  532.  * {00000D0B-0901-11d1-8B06-00A024406D59}
  533.  *
  534.  */
  535. DEFINE_GUID(IID_IRMASiteFullScreen, 0x00000D0B, 0x901, 
  536.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  537. #undef  INTERFACE
  538. #define INTERFACE   IRMASiteFullScreen
  539. DECLARE_INTERFACE_(IRMASiteFullScreen, IUnknown)
  540. {
  541.     /*
  542.      * IUnknown methods
  543.      */
  544.     STDMETHOD(QueryInterface) (THIS_
  545. REFIID riid,
  546. void** ppvObj) PURE;
  547.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  548.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  549.     /*
  550.      * IRMASiteFullScreen methods
  551.      */
  552.     STDMETHOD(EnterFullScreen) (THIS) PURE;
  553.     STDMETHOD(ExitFullScreen) (THIS) PURE;
  554.     STDMETHOD(TestFullScreen) (THIS_
  555. void* hTestBitmap,const char* pszStatusText) PURE;
  556.     STDMETHOD_(BOOL, IsFullScreen) (THIS) PURE;
  557. };
  558. /****************************************************************************
  559.  * 
  560.  *  Interface:
  561.  * IRMAEventHookMgr
  562.  *
  563.  *  Purpose:
  564.  *
  565.  * Add ability to hook events from a named region
  566.  *
  567.  *  IID_IRMAEventHookMgr:
  568.  *
  569.  * {00000D0D-0901-11d1-8B06-00A024406D59}
  570.  *
  571.  */
  572. DEFINE_GUID(IID_IRMAEventHookMgr, 0x00000D0D, 0x901, 
  573.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  574. #undef  INTERFACE
  575. #define INTERFACE   IRMAEventHookMgr
  576. DECLARE_INTERFACE_(IRMAEventHookMgr, IUnknown)
  577. {
  578.     /*
  579.      * IUnknown methods
  580.      */
  581.     STDMETHOD(QueryInterface) (THIS_
  582. REFIID riid,
  583. void** ppvObj) PURE;
  584.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  585.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  586.     /*
  587.      * IRMAEventHookMgr methods
  588.      */
  589.     STDMETHOD(AddHook) (THIS_
  590. IRMAEventHook* pHook,
  591. const char* pRegionName,
  592. UINT16 uLayer) PURE;
  593.     STDMETHOD(RemoveHook) (THIS_
  594.      IRMAEventHook* pHook,
  595. const char* pRegionName,
  596. UINT16 uLayer) PURE;
  597. };
  598. /****************************************************************************
  599.  * 
  600.  *  Interface:
  601.  * IRMAEventHook
  602.  *
  603.  *  Purpose:
  604.  *
  605.  * Object that gets hooked events sent by IRMAEventHookMgr
  606.  *
  607.  *  IID_IRMAEventHookMgr:
  608.  *
  609.  * {00000D0E-0901-11d1-8B06-00A024406D59}
  610.  *
  611.  */
  612. DEFINE_GUID(IID_IRMAEventHook, 0x00000D0E, 0x901, 
  613.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  614. #undef  INTERFACE
  615. #define INTERFACE   IRMAEventHook
  616. DECLARE_INTERFACE_(IRMAEventHook, IUnknown)
  617. {
  618.     /*
  619.      * IUnknown methods
  620.      */
  621.     STDMETHOD(QueryInterface) (THIS_
  622. REFIID riid,
  623. void** ppvObj) PURE;
  624.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  625.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  626.     /*
  627.      * IRMAEventHook methods
  628.      */
  629.     STDMETHOD(SiteAdded) (THIS_
  630. IRMASite* pSite) PURE;
  631.     STDMETHOD(HandleEvent) (THIS_
  632.      IRMASite* pSite,
  633. PNxEvent* pEvent) PURE;
  634.     STDMETHOD(SiteRemoved) (THIS_
  635.      IRMASite* pSite) PURE;
  636. };
  637. /****************************************************************************
  638.  * 
  639.  *  Interface:
  640.  * IRMAStatusMessage
  641.  *
  642.  *  Purpose:
  643.  *
  644.  * This is the interface for setting the status text. 
  645.  *
  646.  *  IID_IRMAStatusMessage:
  647.  *
  648.  * {00000D10-0901-11d1-8B06-00A024406D59}
  649.  *
  650.  */
  651. DEFINE_GUID(IID_IRMAStatusMessage, 0x00000D10, 0x901, 
  652.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  653. #undef  INTERFACE
  654. #define INTERFACE   IRMAStatusMessage
  655. DECLARE_INTERFACE_(IRMAStatusMessage, IUnknown)
  656. {
  657.     /*
  658.      * IUnknown methods
  659.      */
  660.     STDMETHOD(QueryInterface) (THIS_
  661. REFIID riid,
  662. void** ppvObj) PURE;
  663.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  664.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  665.     /*
  666.      * IRMAStatusMessage methods
  667.      */
  668.     STDMETHOD(SetStatus) (THIS_ const char* pText) PURE;
  669. };
  670. #endif /* _RMAWIN_H_ */