home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 December / PCWKCD1296.iso / vjplusb / activex / inetsdk / samples / urlpad / download.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-24  |  5.3 KB  |  153 lines

  1. // ===========================================================================
  2. // File: DOWNLOAD.Cpp
  3. // Defines the class behaviour for CBindStatusCallback. 
  4.  
  5.  
  6. #include "stdafx.h"
  7. #include "Mainfrm.h"
  8. #include "download.h"
  9. #include "winnls.h"
  10. #include "Util.H"
  11.  
  12. // ===========================================================================
  13. //                     CBindStatusCallback Implementation
  14. // ===========================================================================
  15.  
  16. // ---------------------------------------------------------------------------
  17. // %%Function: CBindStatusCallback::CBindStatusCallback
  18. // ---------------------------------------------------------------------------
  19. CBindStatusCallback::CBindStatusCallback(CMainFrame * pMDIframewnd)
  20. {
  21.     m_pbinding = NULL;
  22.     m_pstm = NULL;
  23.     m_cRef = 1;
  24.     m_cbOld = 0;
  25.     m_pMDIframwnd=pMDIframewnd;
  26. }  // CBindStatusCallback
  27.  
  28. // ---------------------------------------------------------------------------
  29. // %%Function: CBindStatusCallback::~CBindStatusCallback
  30. // ---------------------------------------------------------------------------
  31. CBindStatusCallback::~CBindStatusCallback()
  32. {
  33.     if (m_pstm)
  34.         m_pstm->Release();
  35.     if (m_pbinding)
  36.         m_pbinding->Release();
  37. }  // ~CBindStatusCallback
  38.  
  39.  
  40. // ---------------------------------------------------------------------------
  41. // %%Function: CBindStatusCallback::QueryInterface
  42. // ---------------------------------------------------------------------------
  43.  STDMETHODIMP
  44. CBindStatusCallback::QueryInterface(REFIID riid, void** ppv)
  45.     *ppv = NULL;
  46.     
  47.     if (riid==IID_IUnknown || riid==IID_IBindStatusCallback)
  48.         {
  49.         *ppv = this;
  50.         AddRef();
  51.         return S_OK;
  52.         }
  53.     return E_NOINTERFACE;
  54. }  // CBindStatusCallback::QueryInterface
  55.  
  56. // ---------------------------------------------------------------------------
  57. // %%Function: CBindStatusCallback::OnStartBinding
  58. // ---------------------------------------------------------------------------
  59.  STDMETHODIMP
  60. CBindStatusCallback::OnStartBinding(DWORD grfBSCOption, IBinding* pbinding)
  61. {
  62.     m_pMDIframwnd->MyShowPane("Starting to Download File ");
  63.     return(NOERROR);
  64. }  // CBindStatusCallback::OnStartBinding
  65.  
  66. // ---------------------------------------------------------------------------
  67. // %%Function: CBindStatusCallback::GetPriority
  68. // ---------------------------------------------------------------------------
  69.  STDMETHODIMP
  70. CBindStatusCallback::GetPriority(LONG* pnPriority) 
  71. {
  72.      return(NOERROR);
  73. }  // CBindStatusCallback::GetPriority
  74.  
  75. // ---------------------------------------------------------------------------
  76. // %%Function: CBindStatusCallback::OnLowResource
  77. // ---------------------------------------------------------------------------
  78.  STDMETHODIMP
  79. CBindStatusCallback::OnLowResource(DWORD dwReserved)
  80. {
  81.       return(NOERROR);
  82. }  // CBindStatusCallback::OnLowResource
  83.  
  84. // ---------------------------------------------------------------------------
  85. // %%Function: CBindStatusCallback::OnStopBinding
  86. // ---------------------------------------------------------------------------
  87.  STDMETHODIMP
  88. CBindStatusCallback::OnStopBinding(HRESULT hrStatus, LPCWSTR pszError) 
  89. {
  90.     if (hrStatus)
  91.         m_pMDIframwnd->MyShowPane("File download Failed.");
  92.     else
  93.         m_pMDIframwnd->MyShowPane("File Downloaded");
  94.     return(NOERROR);
  95. }  // CBindStatusCallback::OnStopBinding
  96.  
  97. // ---------------------------------------------------------------------------
  98. // %%Function: CBindStatusCallback::GetBindInfo
  99. // ---------------------------------------------------------------------------
  100.  STDMETHODIMP
  101. CBindStatusCallback::GetBindInfo(DWORD* pgrfBINDF, BINDINFO* pbindInfo)
  102. {
  103.      return (NOERROR);
  104. }  // CBindStatusCallback::GetBindInfo
  105.  
  106. // ---------------------------------------------------------------------------
  107. // %%Function: CBindStatusCallback::OnDataAvailable
  108. // This function is called whenever data starts arriving. When the file download is
  109. // complete then the BSCF_LASTDATANOTIFICATION comes and you can get the local cached
  110. // File Name.
  111. // ---------------------------------------------------------------------------
  112.  STDMETHODIMP
  113.  CBindStatusCallback::OnDataAvailable
  114.  (
  115.  DWORD grfBSCF, 
  116.  DWORD dwSize, 
  117.  FORMATETC* pfmtetc, 
  118.  STGMEDIUM* pstgmed
  119.  ) 
  120.  {
  121.           return(NOERROR);
  122.  }  // CBindStatusCallback::OnDataAvailable
  123.  
  124.  
  125. // ---------------------------------------------------------------------------
  126. // %%Function: CBindStatusCallback::OnObjectAvailable
  127. // ---------------------------------------------------------------------------
  128.  STDMETHODIMP
  129. CBindStatusCallback::OnObjectAvailable(REFIID riid, IUnknown* punk) 
  130. {
  131.      return(NOERROR);
  132. }  // CBindStatusCallback::OnObjectAvailable
  133.  
  134. // ---------------------------------------------------------------------------
  135. // %%Function: CBindStatusCallback::OnProgress
  136. // ---------------------------------------------------------------------------
  137. STDMETHODIMP 
  138. CBindStatusCallback::OnProgress
  139.      ULONG ulProgress,
  140.      ULONG ulProgressMax,
  141.      ULONG ulStatusCode,
  142.      LPCWSTR pwzStatusText
  143. {
  144.     char    msg[100];
  145.     wsprintf(msg,"Downloaded : %d bytes of %d ", ulProgress, (ulProgress>ulProgressMax)?ulProgress:ulProgressMax);
  146.     m_pMDIframwnd->MyShowPane(msg);
  147.  
  148.      return(NOERROR);
  149. }// CBindStatusCallback::OnProgress
  150.