home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2000 April / VPR0004A.BIN / OLS / SADKT100 / sadkt100.lzh / SariAddin.h < prev    next >
C/C++ Source or Header  |  1999-12-31  |  3KB  |  105 lines

  1. /*========================================================================
  2.  
  3.      SariAddin.h
  4.  
  5.     SARIはISariAddinインターフェースを介して、アドインプログラムを組み込み 
  6.     ます。
  7.     そのためISariAddinのUUIDは既定値を使います。これはSari_i.hをインクル 
  8.     ードすることにより組み込まれます。
  9.     しかしCLSIDは独自のものを作成しなければなりません。CLSIDを作成するに 
  10.     は、VC++ではGuidgen.exeを使います。Guiden.exeはDevStudio\VC\Binか、 
  11.     Program Files\Microsoft Visual Stadio\Common\Toolsなどといったディレク 
  12.     トリにあるはずです。
  13.     Guidgen.exeでは4つの形式を選択できます。ここでは上から2番目、DEFINE_ 
  14.     GUID()形式を選択してください。作成したら、コピーアンドペーストで、クラ 
  15.     ス定義の前に張りつけ、<<Name>>の部分をCLSID_SariAddinに書き換えます。
  16.     (下記に作成例が書いてあります)
  17.     
  18.     最後にISariAddinを公開しなければなりません。
  19.     すなわち、ATLを使用してプロジェクトを作成しているなら、DllMainが記載さ 
  20.     れたファイル(プロジェクトがTestなら、Test.cpp)に、
  21.     
  22.     BEGIN_OBJECT_MAP(ObjectMap)
  23.         -----なにか記述があるかも----------------。
  24.     END_OBJECT_MAP()
  25.  
  26.     という部分があるはずです。
  27.     ここにエントリを付け加え、下記のようにします。
  28.     
  29.     BEGIN_OBJECT_MAP(ObjectMap)
  30.         -----なにか記述があるかも----------------。
  31.     OBJECT_ENTRY(CLSID_SariAddin, CSariAddin)
  32.     END_OBJECT_MAP()
  33.  
  34.     そしてそのファイルにこのヘッダファイル(SariAddin.h)をインクルードしてお 
  35.     いてください。
  36.  
  37. =========================================================================*/
  38.  
  39. #ifndef __SARIADDIN_H_
  40. #define __SARIADDIN_H_
  41.  
  42. #include "resource.h"       // メイン シンボル
  43. #include "Sari_i.h"
  44.  
  45. // シンクオブジェクトをもつクラスの定義をインクルードしてください。
  46. // ここではそれがCSinkであると仮定し、Sink.hをインクルードしています。
  47. #include "Sink.h"
  48.  
  49.  
  50. /*-------------------------------------------------------------------------
  51.  これは例です。
  52.  必ずGuidgen.exeで独自のクラスIDを作成してください。
  53.  <<NAME>>部分を下例のようにCLSID_SariAddinにします。
  54.  
  55. // {94AD03C0-83F1-11d3-8FFE-0090CC001E1E}
  56. DEFINE_GUID(CLSID_SariAddin,
  57. 0x94ad03c0, 0x83f1, 0x11d3, 0x8f, 0xfe, 0x0, 0x90, 0xcc, 0x0, 0x1e, 0x1e);
  58.  
  59. -------------------------------------------------------------------------*/
  60.  
  61.  
  62. /////////////////////////////////////////////////////////////////////////////
  63. // CSariAddin
  64. class CAPL;
  65. class ATL_NO_VTABLE CSariAddin : 
  66.     public CComObjectRootEx<CComSingleThreadModel>,
  67.     public CComCoClass<CSariAddin, &CLSID_SariAddin>,
  68.     public ISupportErrorInfo,
  69.     public ISariAddin
  70. {
  71. public:
  72.     CSariAddin()
  73.     {
  74.         m_dwCookie=0;
  75.         m_pSink=NULL;
  76.     }
  77.  
  78. DECLARE_REGISTRY(CSariAddin, "SomeProj.SariAddin.1",
  79.                  "SomeProj", IDS_SOMEPROJ_LONGNAME,
  80.                  THREADFLAGS_APARTMENT)
  81.  
  82. DECLARE_NOT_AGGREGATABLE(CSariAddin)
  83.  
  84. DECLARE_PROTECT_FINAL_CONSTRUCT()
  85.  
  86. BEGIN_COM_MAP(CSariAddin)
  87.     COM_INTERFACE_ENTRY(ISariAddin)
  88.     COM_INTERFACE_ENTRY(ISupportErrorInfo)
  89. END_COM_MAP()
  90.  
  91. // ISupportsErrorInfo
  92.     STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
  93.  
  94. // ISariAddin
  95. public:
  96.     STDMETHOD(OnDisconnection)(/*[in]*/VARIANT_BOOL bLastTime);
  97.     STDMETHOD(OnConnection)(/*[in]*/ISRAPL *pApl, /*[in]*/long lFlag, /*[in]*/long lCookie, /*[out]*/VARIANT_BOOL *pbResult);
  98.  
  99.     DWORD m_dwCookie;
  100.     CComObject<CSink> *m_pSink;
  101.  
  102. };
  103.  
  104. #endif //__SARIADDIN_H_
  105.