home *** CD-ROM | disk | FTP | other *** search
/ Supercompiler 1997 / SUPERCOMPILER97.iso / MS_VC.50 / SharedIDE / TEMPLATE / ATL / ASP.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-16  |  2.8 KB  |  140 lines

  1. // [!CPPName] : Implementation of [!ClassName]
  2.  
  3. #include "stdafx.h"
  4. #include "[!ProjectName].h"
  5. #include "[!HeaderName]"
  6. [!crlf]
  7.  
  8. /////////////////////////////////////////////////////////////////////////////
  9. // [!ClassName]
  10. [!crlf]
  11. [!if=(ErrorInfoEnabled, "TRUE")]
  12. STDMETHODIMP [!ClassName]::InterfaceSupportsErrorInfo(REFIID riid)
  13. {
  14.     static const IID* arr[] = 
  15.     {
  16.         &IID_[!InterfaceName],
  17.     };
  18.  
  19.     for (int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
  20.     {
  21.         if (InlineIsEqualGUID(*arr[i],riid))
  22.             return S_OK;
  23.     }
  24.     return S_FALSE;
  25. }
  26. [!crlf]
  27. [!endif]
  28.  
  29. [!if=(OnStartPage, "TRUE")]
  30. STDMETHODIMP [!ClassName]::OnStartPage (IUnknown* pUnk)  
  31. {
  32.     if(!pUnk)
  33.         return E_POINTER;
  34. [!crlf]
  35.  
  36.     CComPtr<IScriptingContext> spContext;
  37.     HRESULT hr;
  38. [!crlf]
  39.     // Get the IScriptingContext Interface
  40.     hr = pUnk->QueryInterface(IID_IScriptingContext, (void **)&spContext);
  41.     if(FAILED(hr))
  42.         return hr;
  43.  
  44. [!if=(Request, "TRUE")]
  45. [!crlf]
  46.     // Get Request Object Pointer
  47.     hr = spContext->get_Request(&m_piRequest);
  48.     if(FAILED(hr))
  49.     {
  50.         spContext.Release();
  51.         return hr;
  52.     }
  53. [!endif]
  54.  
  55. [!if=(Response, "TRUE")]
  56. [!crlf]
  57.     // Get Response Object Pointer
  58.     hr = spContext->get_Response(&m_piResponse);
  59.     if(FAILED(hr))
  60.     {
  61. [!if=(Request, "TRUE")]
  62.         m_piRequest.Release();
  63. [!endif]
  64.         return hr;
  65.     }
  66. [!endif]
  67.     
  68. [!if=(Server, "TRUE")]
  69.     // Get Server Object Pointer
  70.     hr = spContext->get_Server(&m_piServer);
  71.     if(FAILED(hr))
  72.     {
  73. [!if=(Request, "TRUE")]
  74.         m_piRequest.Release();
  75. [!endif]
  76. [!if=(Response, "TRUE")]
  77.         m_piResponse.Release();
  78. [!endif]
  79.         return hr;
  80.     }
  81. [!endif]
  82.     
  83. [!if=(Session, "TRUE")]
  84.     // Get Session Object Pointer
  85.     hr = spContext->get_Session(&m_piSession);
  86.     if(FAILED(hr))
  87.     {
  88. [!if=(Request, "TRUE")]
  89.         m_piRequest.Release();
  90. [!endif]
  91. [!if=(Response, "TRUE")]
  92.         m_piResponse.Release();
  93. [!endif]
  94. [!if=(Server, "TRUE")]
  95.         m_piServer.Release();
  96. [!endif]
  97.         return hr;
  98.     }
  99. [!endif]
  100.  
  101. [!if=(Application, "TRUE")]
  102. [!crlf]
  103.     // Get Application Object Pointer
  104.     hr = spContext->get_Application(&m_piApplication);
  105.     if(FAILED(hr))
  106.     {
  107. [!if=(Request, "TRUE")]
  108.         m_piRequest.Release();
  109. [!endif]
  110. [!if=(Response, "TRUE")]
  111.         m_piResponse.Release();
  112. [!endif]
  113. [!if=(Server, "TRUE")]
  114.         m_piServer.Release();
  115. [!endif]
  116. [!if=(Session, "TRUE")]
  117.         m_piSession.Release();
  118. [!endif]
  119.         return hr;
  120.     }
  121. [!endif]
  122.     m_bOnStartPageCalled = TRUE;
  123.     return S_OK;
  124. }
  125. [!crlf]
  126.  
  127. STDMETHODIMP [!ClassName]::OnEndPage ()  
  128. {
  129.     m_bOnStartPageCalled = FALSE;
  130.     // Release all interfaces
  131. [!if=(Request, "TRUE")]    m_piRequest.Release();[!endif]
  132. [!if=(Response, "TRUE")]    m_piResponse.Release();[!endif]
  133. [!if=(Server, "TRUE")]    m_piServer.Release();[!endif]
  134. [!if=(Session, "TRUE")]    m_piSession.Release();[!endif]
  135. [!if=(Application, "TRUE")]    m_piApplication.Release();[!endif]
  136. [!crlf]
  137.     return S_OK;
  138. }
  139. [!crlf]
  140. [!endif]