progsink.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:6k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _PROGSINK_H_
  36. #define _PROGSINK_H_
  37. /*
  38.  * Forward declarations of some interfaces defined here-in.
  39.  */
  40. typedef _INTERFACE IUnknown IUnknown;
  41. typedef _INTERFACE IHXProgressSink IHXProgressSink;
  42. typedef _INTERFACE IHXProgressSinkControl      IHXProgressSinkControl;
  43.  
  44. /****************************************************************************
  45.  * 
  46.  *  Interface:
  47.  *
  48.  *  IHXProgressSink
  49.  *
  50.  *  Purpose:
  51.  *
  52.  *  Supports callback notification about a job's progress
  53.  *
  54.  *  IHXProgressSink
  55.  *
  56.  *  {6F8C5FB0-C1D3-11d2-871B-00C0F031C266}
  57.  *
  58.  */
  59. DEFINE_GUID(IID_IHXProgressSink, 
  60.     0x6f8c5fb0, 0xc1d3, 0x11d2, 0x87, 0x1b, 0x0, 0xc0, 0xf0, 0x31, 0xc2, 0x66);
  61. #undef  INTERFACE
  62. #define INTERFACE   IHXProgressSink
  63. DECLARE_INTERFACE_(IHXProgressSink, IUnknown)
  64. {
  65.     /************************************************************************
  66.      * IUnknown methods
  67.      */
  68.     STDMETHOD(QueryInterface) (THIS_
  69. REFIID riid,
  70. void** ppvObj) PURE;
  71.     STDMETHOD_(UINT32,AddRef) (THIS) PURE;
  72.     STDMETHOD_(UINT32,Release) (THIS) PURE;
  73.     /************************************************************************
  74.      * IHXProgressSink methods
  75.      */
  76.    
  77.     /************************************************************************
  78.      * Method:
  79.      *     IHXProgressSink::SetProgress
  80.      * Purpose:
  81.      *     Set the percent complete.
  82.      * Parameters:
  83.      *     ulPercentComplete - [in] Percent of the merge that is complete.
  84.      */
  85.     STDMETHOD(SetProgress)     (THIS_ UINT32 ulPercentComplete) PURE;
  86.     /************************************************************************
  87.      * Method:
  88.      *     IHXProgressSink::NotifyStart
  89.      * Purpose:
  90.      *     Notification that the job is starting.
  91.      */
  92.     STDMETHOD(NotifyStart)     (THIS) PURE;
  93.     /************************************************************************
  94.      * Method:
  95.      *     IHXProgressSink::NotifyFinish
  96.      * Purpose:
  97.      *     Notification that the job is complete.
  98.      */
  99.     STDMETHOD(NotifyFinish)     (THIS) PURE;
  100. };
  101. /****************************************************************************
  102.  * 
  103.  *  Interface:
  104.  *
  105.  *  IHXProgressSinkControl
  106.  *
  107.  *  Purpose:
  108.  *
  109.  *  Used to register progress callbacks
  110.  *
  111.  *  IHXProgressSinkControl
  112.  *
  113.  *  {DC464800-C1D3-11d2-871B-00C0F031C266}
  114.  *
  115.  */
  116. DEFINE_GUID(IID_IHXProgressSinkControl, 
  117.     0xdc464800, 0xc1d3, 0x11d2, 0x87, 0x1b, 0x0, 0xc0, 0xf0, 0x31, 0xc2, 0x66);
  118. #undef  INTERFACE
  119. #define INTERFACE   IHXProgressSinkControl
  120. DECLARE_INTERFACE_(IHXProgressSinkControl, IUnknown)
  121. {
  122.     /************************************************************************
  123.      * IUnknown methods
  124.      */
  125.     STDMETHOD(QueryInterface) (THIS_
  126. REFIID riid,
  127. void** ppvObj) PURE;
  128.     STDMETHOD_(UINT32,AddRef) (THIS) PURE;
  129.     STDMETHOD_(UINT32,Release) (THIS) PURE;
  130.     /************************************************************************
  131.      * IHXProgressSinkControl methods
  132.      */
  133.     /* Type of progress sink */
  134.     enum SINK_TYPE
  135.     {
  136.         FILE_MERGE_PROGRESS = 0
  137.     };
  138.    
  139.     /************************************************************************
  140.      * Method:
  141.      *     IHXProgressSinkControl::AddSink
  142.      * Purpose:
  143.      *     Adds sink.
  144.      * Parameters:
  145.      *      nSinkType - [in] Type of progress sink 
  146.      *     pObj - [in] Object that supports the IHXProgressSink interface.
  147.      */
  148.     STDMETHOD(AddSink)     (THIS_ SINK_TYPE nSinkType, IHXProgressSink* pObj) PURE;
  149.     /************************************************************************
  150.      * Method:
  151.      *     IHXProgressSinkControl::RemoveSink
  152.      * Purpose:
  153.      *     Removes sink.
  154.      * Parameters:
  155.      *      nSinkType - [in] Type of progress sink 
  156.      *     pObj - [in] Object that supports the IHXProgressSink interface.
  157.      */
  158.     STDMETHOD(RemoveSink)     (THIS_ SINK_TYPE nSinkType, IHXProgressSink* pObj) PURE;
  159. };
  160. #endif //_PROGSINK_H_