home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / dbmsg / mapi / simple.frm / viewntfr.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-11  |  2.5 KB  |  122 lines

  1. /* copyright (c) 1995 Microsoft Corporation -- All rights reserved */
  2.  
  3. #include "precomp.h"
  4.  
  5. #pragma warning(disable:4514) // Unreferened inline function has been removed
  6.  
  7. CViewNotifier::CViewNotifier (void)
  8. {
  9.     Initialize();
  10. }
  11.  
  12. CViewNotifier::~CViewNotifier ()
  13. {
  14. }
  15.  
  16. BOOL CViewNotifier::Initialize (void)
  17. {
  18.     ULONG   i;
  19.  
  20.     for (i = 0; i < MAXSINKS; ++i)
  21.     {
  22.         m_aryAdviseSink [i] = NULL;
  23.     }
  24.  
  25.     return TRUE;
  26. }
  27.  
  28. HRESULT CViewNotifier::Advise(LPMAPIVIEWADVISESINK pAdvise,
  29.                               ULONG * pulConnection)
  30. {
  31.     ULONG   i;
  32.  
  33.     for (i = 0; i < MAXSINKS; ++i)
  34.     {
  35.         if (NULL == m_aryAdviseSink [i] )
  36.         {
  37.             m_aryAdviseSink [i] = pAdvise;
  38.             m_aryAdviseSink [i] ->AddRef();
  39.             *pulConnection = ++i;
  40.             // connection == index + 1
  41.             return S_OK;
  42.         }
  43.     }
  44.  
  45.     return ResultFromScode(E_OUTOFMEMORY);
  46. }
  47.  
  48. HRESULT CViewNotifier::Unadvise (ULONG ulConnection)
  49. {
  50.     if (--ulConnection < MAXSINKS)
  51.     {   // connection == index + 1
  52.         m_aryAdviseSink [ulConnection] ->Release();
  53.         m_aryAdviseSink [ulConnection] = NULL;
  54.         return S_OK;
  55.     }
  56.     return ResultFromScode(E_INVALIDARG);
  57. }
  58.  
  59. void CViewNotifier::OnShutdown (void)
  60. {
  61.     ULONG   i;
  62.  
  63.     for (i = 0; i < MAXSINKS; ++i)
  64.     {
  65.         if (NULL != m_aryAdviseSink [i] )
  66.         {
  67.             m_aryAdviseSink [i] -> OnShutdown ();
  68.         }
  69.     }
  70. }
  71.  
  72. void CViewNotifier::OnNewMessage (void)
  73. {
  74.     ULONG   i;
  75.  
  76.     for (i = 0; i < MAXSINKS; ++i)
  77.     {
  78.         if (NULL != m_aryAdviseSink [i] )
  79.         {
  80.             m_aryAdviseSink [i] ->OnNewMessage();
  81.         }
  82.     }
  83. }
  84.  
  85. HRESULT CViewNotifier::OnPrint(ULONG ulPageNumber, HRESULT hrStatus)
  86. {
  87.     ULONG   i;
  88.  
  89.     for (i = 0; i < MAXSINKS; ++i)
  90.     {
  91.         if (NULL != m_aryAdviseSink [i] )
  92.         {
  93.             if(MAPI_E_USER_CANCEL == GetScode(m_aryAdviseSink [i] ->OnPrint(ulPageNumber, hrStatus)))
  94.                 return MAPI_E_USER_CANCEL;
  95.         }
  96.     }
  97.     
  98.     return hrSuccess;
  99. }
  100.  
  101. void CViewNotifier::OnSubmitted (void)
  102. {
  103.     ULONG   i;
  104.  
  105.     for (i = 0; i < MAXSINKS; ++i) {
  106.         if (NULL != m_aryAdviseSink [i] ) {
  107.             m_aryAdviseSink [i] ->OnSubmitted();
  108.         }
  109.     }
  110. }
  111.  
  112. void CViewNotifier::OnSaved (void)
  113. {
  114.     ULONG   i;
  115.  
  116.     for (i = 0; i < MAXSINKS; ++i) {
  117.         if (NULL != m_aryAdviseSink [i] ) {
  118.             m_aryAdviseSink [i] ->OnSaved();
  119.         }
  120.     }
  121. }
  122.