home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 27 / IOPROG_27.ISO / SOFT / ADSDK.ZIP / Samples / Extension / Tutorial / step2 / HelloWorld.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-09-23  |  2.9 KB  |  111 lines

  1. // HelloWorld.h: Definition of the HelloWorld class
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4.  
  5. #if !defined(AFX_HELLOWORLD_H__E1E3EDF9_48D1_11D2_B22B_0000F87A6B50__INCLUDED_)
  6. #define AFX_HELLOWORLD_H__E1E3EDF9_48D1_11D2_B22B_0000F87A6B50__INCLUDED_
  7.  
  8. #if _MSC_VER > 1000
  9. #pragma once
  10. #endif // _MSC_VER > 1000
  11.  
  12. #include "resource.h"       // main symbols
  13. //#import "c:\winnt\system32\activeds.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids 
  14.  
  15. /////////////////////////////////////////////////////////////////////////////
  16. // HelloWorld
  17.  
  18. class HelloWorld : 
  19.     //public IDispatchImpl<IHelloWorld, &IID_IHelloWorld, &LIBID_ADSFIRSTEXTLib>, 
  20.     public IHelloWorld,
  21.     public ISupportErrorInfo,
  22.     public CComObjectRoot,
  23.     public CComCoClass<HelloWorld,&CLSID_HelloWorld>,
  24.     public IADsExtension
  25. {
  26. protected:
  27.     ITypeInfo   *m_pTypeInfo;
  28.  
  29. public:
  30.     HelloWorld();
  31.     ~HelloWorld();
  32.  
  33. BEGIN_COM_MAP(HelloWorld)
  34.     COM_INTERFACE_ENTRY(IDispatch)
  35.     COM_INTERFACE_ENTRY(IHelloWorld)
  36.     COM_INTERFACE_ENTRY(ISupportErrorInfo)
  37.     COM_INTERFACE_ENTRY(IADsExtension)
  38. END_COM_MAP()
  39. //DECLARE_NOT_AGGREGATABLE(HelloWorld) 
  40. // Remove the comment from the line above if you don't want your object to 
  41. // support aggregation. 
  42.  
  43. DECLARE_REGISTRY_RESOURCEID(IDR_HelloWorld)
  44. // ISupportsErrorInfo
  45.     STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
  46.  
  47.     // IDispatch
  48.     STDMETHOD(GetTypeInfoCount)(UINT* pctinfo); 
  49.     STDMETHOD(GetTypeInfo)(UINT itinfo, LCID lcid, ITypeInfo** pptinfo);
  50.     STDMETHOD(GetIDsOfNames)(REFIID riid, LPOLESTR* rgszNames, UINT cNames,
  51.         LCID lcid, DISPID* rgdispid);
  52.     STDMETHOD(Invoke)(DISPID dispidMember, REFIID riid,
  53.         LCID lcid, WORD wFlags, DISPPARAMS* pdispparams, VARIANT* pvarResult,
  54.         EXCEPINFO* pexcepinfo, UINT* puArgErr);
  55.  
  56. // IHelloWorld
  57. public:
  58.  
  59.     STDMETHOD(Say)();
  60. // IADsExtension
  61.     STDMETHOD(Operate)(ULONG dwCode, VARIANT varData1, VARIANT varData2, VARIANT varData3)
  62.     {
  63.         HRESULT hr = S_OK;
  64.  
  65.         switch (dwCode) 
  66.         {
  67.  
  68.             case ADS_EXT_INITCREDENTIALS:
  69.                   // For debugging purpose you can prompt a dialog box
  70.                   // MessageBox(NULL, "INITCRED", "ADsExt", MB_OK);
  71.                   break;
  72.  
  73.             default:
  74.                   hr = E_FAIL;
  75.                   break;
  76.  
  77.         }        
  78.  
  79.         return hr;
  80.         
  81.     }
  82.  
  83.     
  84.     STDMETHOD(PrivateGetIDsOfNames)(REFIID riid, OLECHAR ** rgszNames, unsigned int cNames, LCID lcid, DISPID  * rgdispid)
  85.     {
  86.         
  87.       if (rgdispid == NULL)
  88.       {
  89.             return E_POINTER;
  90.       }
  91.     
  92.         return  DispGetIDsOfNames(m_pTypeInfo, rgszNames, cNames, rgdispid);
  93.     }
  94.  
  95.  
  96.  
  97.     STDMETHOD(PrivateInvoke)(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo, UINT * puArgErr)
  98.     {
  99.              return DispInvoke( (IHelloWorld*)this, 
  100.                 m_pTypeInfo,
  101.                 dispidMember, 
  102.                 wFlags, 
  103.                 pdispparams, 
  104.                 pvarResult, 
  105.                 pexcepinfo, 
  106.                 puArgErr );
  107.     }
  108. };
  109.  
  110. #endif // !defined(AFX_HELLOWORLD_H__E1E3EDF9_48D1_11D2_B22B_0000F87A6B50__INCLUDED_)
  111.