home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / mfc / general / cmnctrl1 / notifwdw.cpp < prev    next >
C/C++ Source or Header  |  1998-03-26  |  3KB  |  110 lines

  1. // NotifySowCase.cpp : implementation file
  2. //
  3.  
  4. // This is a part of the Microsoft Foundation Classes C++ library.
  5. // Copyright (C) 1992-1998 Microsoft Corporation
  6. // All rights reserved.
  7. //
  8. // This source code is only intended as a supplement to the
  9. // Microsoft Foundation Classes Reference and related
  10. // electronic documentation provided with the library.
  11. // See these sources for detailed information regarding the
  12. // Microsoft Foundation Classes product.
  13.  
  14. #include "stdafx.h"
  15. #include "CmnCtrl1.h"
  16. #include "notifwdw.h"
  17.  
  18. #ifdef _DEBUG
  19. #define new DEBUG_NEW
  20. #undef THIS_FILE
  21. static char THIS_FILE[] = __FILE__;
  22. #endif
  23.  
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CNotifyShowCase
  26.  
  27. CNotifyShowCase::CNotifyShowCase()
  28. {
  29.     m_totalLines = 200;  // use this default
  30. }
  31.  
  32. CNotifyShowCase::~CNotifyShowCase()
  33. {
  34. }
  35.  
  36. BEGIN_MESSAGE_MAP(CNotifyShowCase, CEdit)
  37.     //{{AFX_MSG_MAP(CNotifyShowCase)
  38.         // NOTE - the ClassWizard will add and remove mapping macros here.
  39.     //}}AFX_MSG_MAP
  40. END_MESSAGE_MAP()
  41.  
  42. notifDescrip CNotifyShowCase::m_rgNotifDescrip[NOTIFCOUNT] =
  43. {
  44.         // list control notifications
  45.     {LVN_ITEMCHANGING, _T("LVN_ITEMCHANGING")},
  46.     {LVN_ITEMCHANGED, _T("LVN_ITEMCHANGED")},
  47.     {LVN_INSERTITEM, _T("LVN_INSERTITEM")},
  48.     {LVN_DELETEITEM, _T("LVN_DELETEITEM")},
  49.     {LVN_DELETEALLITEMS, _T("LVN_DELETEALLITEMS")},
  50.     {LVN_BEGINLABELEDIT, _T("LVN_BEGINLABELEDIT")},
  51.     {LVN_ENDLABELEDIT, _T("LVN_ENDLABELEDIT")},
  52.     {LVN_BEGINDRAG, _T("LVN_BEGINDRAG")},
  53.     {LVN_BEGINRDRAG, _T("LVN_BEGINRDRAG")},
  54.     {LVN_COLUMNCLICK, _T("LVN_COLUMNCLICK")},
  55.     {LVN_GETDISPINFO, _T("LVN_GETDISPINFO")},
  56.     {LVN_SETDISPINFO, _T("LVN_SETDISPINFO")},
  57.         // tree control notifications
  58.     {TVN_ITEMEXPANDING, _T("TVN_ITEMEXPANDING")},
  59.     {TVN_BEGINLABELEDIT, _T("TVN_BEGINLABELEDIT")},
  60.     {TVN_ENDLABELEDIT, _T("TVN_ENDLABELEDIT")},
  61.     {TVN_SELCHANGING, _T("TVN_SELCHANGING")},
  62.     {TVN_SELCHANGED, _T("TVN_SELCHANGED")},
  63.     {TVN_GETDISPINFO, _T("TVN_GETDISPINFO")},
  64.     {TVN_SETDISPINFO, _T("TVN_SETDISPINFO")},
  65.     {TVN_BEGINDRAG, _T("TVN_BEGINDRAG")},
  66.     {TVN_KEYDOWN, _T("TVN_KEYDOWN")},
  67.     {TVN_DELETEITEM, _T("TVN_DELETEITEM")},
  68.     {TVN_ITEMEXPANDED, _T("TVN_ITEMEXPANDED")},
  69. };
  70.  
  71.  
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CNotifyShowCase message handlers
  74. void CNotifyShowCase::AddLine(LPCTSTR lpsz)
  75. {
  76.     TCHAR   szt[50];
  77.     int     nLastChar;
  78.     int     cLines;
  79.  
  80.     if (GetLineCount() >= m_totalLines)
  81.     {
  82.         SetSel(0, LineLength(0), TRUE/*bNoScroll*/);  // select the first line
  83.         Clear();  // and remove it
  84.     }
  85.  
  86.     nLastChar = LineIndex((cLines = GetLineCount() - 1)) + LineLength(cLines);
  87.     _stprintf(szt, _T("%s\x0D\x0A"), lpsz);
  88.     SetSel(nLastChar, nLastChar, TRUE/*bNoScroll*/);
  89.     ReplaceSel(szt);
  90. }
  91.  
  92. void CNotifyShowCase::ShowNotification(UINT nCode)
  93. {
  94.     int i;
  95.  
  96.     for (i = 0; i < NOTIFCOUNT; i++)    // linear search for few items is OK
  97.         if (m_rgNotifDescrip[i].nCode == nCode)
  98.             break;
  99.  
  100.     if (i == NOTIFCOUNT)
  101.     {
  102.         TCHAR szt[30];
  103.  
  104.         _stprintf(szt, _T("UNKNOWN CODE (%d)"), nCode);
  105.         AddLine(szt);
  106.     }
  107.     else
  108.         AddLine(m_rgNotifDescrip[i]. sztCodeName);
  109. }
  110.