MENUIT~1.CPP
上传用户:lianyisd
上传日期:2019-11-03
资源大小:5188k
文件大小:2k
源码类别:

midi

开发平台:

Visual C++

  1. // MenuItemList.cpp: implementation of the CMenuItemList class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "MenuItemList.h"
  6. //////////////////////////////////////////////////////////////////////
  7. // Construction/Destruction
  8. //////////////////////////////////////////////////////////////////////
  9. CMenuItemList::CMenuItemList()
  10. {
  11.    m_nCount=0;
  12.    m_pLastItem= NULL;
  13.    m_pHead=NULL;
  14.    m_pTail=NULL;
  15. }
  16. CMenuItemList::~CMenuItemList()
  17. {
  18.   if( m_nCount !=0 )
  19.   RemoveAllItems();
  20. }
  21. void CMenuItemList::Add(MenuItem mItem)
  22. {
  23. MenuItem * pItem=new MenuItem;
  24.       pItem->m_iIndex =m_nCount +1;
  25.   pItem->m_strMenuText = mItem.m_strMenuText ;
  26.       pItem->m_iID = mItem.m_iID ;
  27. //   pItem->m_MenuStyle =mItem.m_MenuStyle ;
  28.   pItem->m_iImageID  =mItem.m_iImageID ;
  29.       pItem->m_pLastItem = m_pLastItem;
  30.   if (NULL== m_pLastItem )  // the head 
  31.    m_pHead=pItem;
  32.   else
  33.        m_pLastItem->m_pNextItem = pItem;
  34.        m_pLastItem = pItem;
  35.    m_pTail=pItem;
  36.    m_nCount++;
  37. }
  38. void CMenuItemList::Remove( unsigned int nIndex)
  39. {
  40. }
  41. CString CMenuItemList::FindItemTextByID( unsigned int nID)
  42. {
  43. MenuItem * pItem;
  44.        pItem=m_pHead;
  45.      CString str1;
  46.       str1="";
  47. while(pItem->m_pNextItem != NULL)
  48. {
  49.        if(nID == pItem->m_iID   )
  50.    return pItem->m_strMenuText ;
  51.    
  52.    if( pItem->m_pNextItem == NULL ) break; 
  53.    pItem= pItem->m_pNextItem ;
  54. }
  55. return str1;
  56. }
  57. void CMenuItemList::RemoveAllItems()
  58. {
  59.    while( m_nCount) RemoveTail();
  60. }
  61. void CMenuItemList::RemoveTail()
  62. {
  63.    if( m_nCount == 0) return;
  64.    MenuItem * pNewTail=NULL;
  65.    if ( m_pTail != m_pHead)
  66.    {
  67.        pNewTail= m_pTail->m_pLastItem ;
  68.        pNewTail->m_pNextItem =NULL;
  69.    }
  70.     delete m_pTail;
  71. m_pTail=pNewTail;
  72. pNewTail=NULL;
  73. m_nCount--;
  74. }
  75. unsigned int CMenuItemList::FindItemIndexByID(unsigned int nID)
  76. {
  77.    MenuItem * pItem;
  78.        pItem=m_pHead;
  79. while(pItem->m_pNextItem != NULL)
  80. {
  81.        if(nID == pItem->m_iID   )
  82.    return pItem->m_iIndex  ;
  83.   
  84.    if( pItem->m_pNextItem == NULL ) break; 
  85.    pItem= pItem->m_pNextItem ;
  86. }
  87. return 0;
  88. }
  89. int CMenuItemList::FindItemImageByID(unsigned int nID)
  90. {
  91.    MenuItem * pItem;
  92.        pItem=m_pHead;
  93. while(pItem->m_pNextItem != NULL)
  94. {
  95.        if(nID == pItem->m_iID   )
  96.    return pItem->m_iImageID     ;
  97.   
  98.    if( pItem->m_pNextItem == NULL ) break; 
  99.    pItem= pItem->m_pNextItem ;
  100. }
  101. return -1;
  102. }