home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / common / msdev98 / template / atl / asp.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-16  |  3.0 KB  |  147 lines

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