MenuPlugin.cpp
上传用户:easylife05
上传日期:2007-02-14
资源大小:393k
文件大小:3k
源码类别:

PlugIns编程

开发平台:

Visual C++

  1. #include "StdAfx.h"
  2. #include "menuplugin.h"
  3. CMenuItem::CMenuItem()
  4. {
  5. m_menuID=0;
  6. }
  7. CMenuItem::CMenuItem(UINT menuID,CLSID classID,short menuAction)
  8. {
  9. m_menuID=menuID;
  10. m_classID=classID;
  11. m_menuAction=menuAction;
  12. }
  13. CMenuItem::~CMenuItem()
  14. {
  15. }
  16. CMenuPlugin::CMenuPlugin(void)
  17. {
  18. }
  19. CMenuPlugin::~CMenuPlugin(void)
  20. {
  21. }
  22. void CMenuPlugin::InitMenu(UINT menuID)
  23. {
  24. m_firstMenuID=menuID;
  25. m_CurrentMenuID=menuID;
  26. m_menuCount=0;
  27. }
  28. BOOL CMenuPlugin::Add(CLSID classID, short menuAction)
  29. {
  30. CMenuItem *mItem;
  31. m_menuCount++;
  32. mItem=new CMenuItem(m_CurrentMenuID,classID,menuAction);
  33. m_CurrentMenuID++;
  34. m_menuList.AddTail(mItem);
  35. return true;
  36. }
  37. CLSID CMenuPlugin::Find(UINT menuID, short& actionID)
  38. {
  39. POSITION pos=m_menuList.GetHeadPosition();
  40. CMenuItem *mItem;
  41. while(pos!=NULL)
  42. {
  43. mItem=m_menuList.GetAt(pos);
  44. if (mItem->m_menuID==menuID)
  45. {
  46. actionID=mItem->m_menuAction;
  47. return mItem->m_classID;
  48. }
  49. m_menuList.GetNext(pos);
  50. }
  51. actionID=-1;  //表示未找到!
  52. return CLSID();
  53. }
  54. void CMenuPlugin::ClearAll(void)
  55. {
  56. POSITION pos=m_menuList.GetHeadPosition();
  57. //CMenuItem *mItem;
  58. while(pos!=NULL)
  59. {
  60. delete m_menuList.GetNext(pos);
  61. }
  62. m_menuList.RemoveAll();
  63. }
  64. CInterfaceItem::CInterfaceItem()
  65. {
  66. m_interface=NULL;
  67. }
  68. CInterfaceItem::~CInterfaceItem()
  69. {
  70. }
  71. //
  72. //-----------------------------------------------
  73. CInterfaceDB::CInterfaceDB(void)
  74. {
  75. }
  76. CInterfaceDB::~CInterfaceDB(void)
  77. {
  78. }
  79. BOOL CInterfaceDB::Add(CLSID classID, IUnknown* interfaceName)
  80. {
  81. //------------------------------------
  82. CInterfaceItem *mItem;
  83. mItem=new CInterfaceItem();
  84. mItem->m_classID=classID;
  85. mItem->m_interface=interfaceName;
  86. m_interfaceList.AddTail(mItem);
  87. return true;
  88. //------------------------------------
  89. }
  90. IUnknown* CInterfaceDB::Find(CLSID classID)
  91. {
  92. POSITION pos=m_interfaceList.GetHeadPosition();
  93. CInterfaceItem *mItem;
  94. while(pos!=NULL)
  95. {
  96. mItem=m_interfaceList.GetAt(pos);
  97. if (mItem->m_classID==classID)
  98. {
  99. return mItem->m_interface;
  100. }
  101. m_interfaceList.GetNext(pos);
  102. }
  103. return NULL;//表示未找到!
  104. }
  105. void CInterfaceDB::ClearAll(void)
  106. {
  107. POSITION pos=m_interfaceList.GetHeadPosition();
  108. while(pos!=NULL)
  109. {
  110. delete m_interfaceList.GetNext(pos);
  111. }
  112. m_interfaceList.RemoveAll();
  113. }
  114. //---------------------------------
  115. CActiveXItem::CActiveXItem()
  116. {
  117. }
  118. CActiveXItem::~CActiveXItem()
  119. {
  120. }
  121. CActiveXDB::CActiveXDB()
  122. {
  123. }
  124. CActiveXDB::~CActiveXDB()
  125. {
  126. }
  127. BOOL CActiveXDB::Add(CLSID classID, COcxCallDlg* pocxCallDlg)
  128. {
  129. //------------------------------------
  130. CActiveXItem *mItem;
  131. mItem=new CActiveXItem();
  132. mItem->m_classID=classID;
  133. mItem->m_ocxDlg=pocxCallDlg;
  134. m_activexList.AddTail(mItem);
  135. return true;
  136. //------------
  137. }
  138. void CActiveXDB::ClearAll(void)
  139. {
  140. POSITION pos=m_activexList.GetHeadPosition();
  141. while(pos!=NULL)
  142. {
  143. delete m_activexList.GetNext(pos);
  144. }
  145. m_activexList.RemoveAll();
  146. }
  147. COcxCallDlg* CActiveXDB::Find(CLSID classID)
  148. {
  149. POSITION pos=m_activexList.GetHeadPosition();
  150. CActiveXItem *mItem;
  151. while(pos!=NULL)
  152. {
  153. mItem=m_activexList.GetAt(pos);
  154. if (mItem->m_classID==classID)
  155. {
  156. return mItem->m_ocxDlg;
  157. }
  158. m_activexList.GetNext(pos);
  159. }
  160. return NULL;//表示未找到!
  161. }