天天看点

一个在AutoCAD里添加菜单的类,用COM接口实现

AddCADFrameMenu.h文件如下:

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

#if  !defined(AFX_ADDCADFRAMEMENU_H__153847F5_DE2C_4B6E_83E8_5BE9FE780CD8__INCLUDED_)

一个在AutoCAD里添加菜单的类,用COM接口实现

#define  AFX_ADDCADFRAMEMENU_H__153847F5_DE2C_4B6E_83E8_5BE9FE780CD8__INCLUDED_

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

#if  _MSC_VER > 1000

一个在AutoCAD里添加菜单的类,用COM接口实现

#pragma  once

一个在AutoCAD里添加菜单的类,用COM接口实现

#endif   //  _MSC_VER > 1000

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

#include  < afxtempl.h >

一个在AutoCAD里添加菜单的类,用COM接口实现

#include  " acad15.h "

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

typedef  struct  CADMenu

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 char name[64];

一个在AutoCAD里添加菜单的类,用COM接口实现

 char order[64];

一个在AutoCAD里添加菜单的类,用COM接口实现

} CADMenu;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

class  CAddCADFrameMenu  

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

public:

一个在AutoCAD里添加菜单的类,用COM接口实现

 CAddCADFrameMenu();

一个在AutoCAD里添加菜单的类,用COM接口实现

 virtual ~CAddCADFrameMenu();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 // 创建菜单

一个在AutoCAD里添加菜单的类,用COM接口实现

 void CreateMenus();

一个在AutoCAD里添加菜单的类,用COM接口实现

 // 添加菜单

一个在AutoCAD里添加菜单的类,用COM接口实现

 void AddMenu(const char* menuName);

一个在AutoCAD里添加菜单的类,用COM接口实现

 // 添加子菜单,menuName-菜单名"--"为分隔符,command要加空格

一个在AutoCAD里添加菜单的类,用COM接口实现

 void AddSubMenu(const char* menuName, const char* command=NULL);

一个在AutoCAD里添加菜单的类,用COM接口实现

 // 添加分隔符

一个在AutoCAD里添加菜单的类,用COM接口实现

 void AddSeparator();

一个在AutoCAD里添加菜单的类,用COM接口实现

 // 添加二级子菜单分隔符

一个在AutoCAD里添加菜单的类,用COM接口实现

 void AddSubSeparator();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 static bool IsMenuExist(IAcadPopupMenu *&pMnu,long &index,const char *mnuname,IAcadPopupMenus *mnus);//菜单是否存在,避免二次加载 add by zhengzhilin

一个在AutoCAD里添加菜单的类,用COM接口实现

 static bool GetAcadApplication(IAcadApplication *&pAcadApp);

一个在AutoCAD里添加菜单的类,用COM接口实现

 static bool GetAcadMenuGroup(IAcadMenuGroup  **pVal,LPCTSTR menuname);

一个在AutoCAD里添加菜单的类,用COM接口实现

 static bool GetLastMenuFromMenubar(CString &sMenu);

一个在AutoCAD里添加菜单的类,用COM接口实现

 static void ClearMenu(IAcadPopupMenus *mnus,LPCTSTR menuname);

一个在AutoCAD里添加菜单的类,用COM接口实现

 static bool GetAcadApplication(LPDISPATCH * pVal);

一个在AutoCAD里添加菜单的类,用COM接口实现

 static bool GetAcadMenuGroup(IAcadMenuGroup  **pVal);

一个在AutoCAD里添加菜单的类,用COM接口实现

 static void CleanUpMenus(); //创建了Menu一定要调用这个函数

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

private:

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 class CCADMenuArray : public CArray <CADMenu*, CADMenu*>

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

 public:

一个在AutoCAD里添加菜单的类,用COM接口实现

  int AddMenu(CADMenu& menu);

一个在AutoCAD里添加菜单的类,用COM接口实现

  int AddMenu(const char* menuName, const char* command);

一个在AutoCAD里添加菜单的类,用COM接口实现

  ~CCADMenuArray();

一个在AutoCAD里添加菜单的类,用COM接口实现

 };

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 CArray <CCADMenuArray*, CCADMenuArray*> m_menus;

一个在AutoCAD里添加菜单的类,用COM接口实现

 int m_menuCount;  // 菜单个数

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 CStringArray m_TopMenuNames; // 菜单名

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

} ;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

#endif   //  !defined(AFX_ADDCADFRAMEMENU_H__153847F5_DE2C_4B6E_83E8_5BE9FE780CD8__INCLUDED_)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

AddCADFrameMenu.cpp文件如下:

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

#include  " stdafx.h "

一个在AutoCAD里添加菜单的类,用COM接口实现

#include  " resource.h "

一个在AutoCAD里添加菜单的类,用COM接口实现

#include  " AddCADFrameMenu.h "

一个在AutoCAD里添加菜单的类,用COM接口实现

#include  " acad15_i.c "

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

#ifdef _DEBUG

一个在AutoCAD里添加菜单的类,用COM接口实现

#undef  THIS_FILE

一个在AutoCAD里添加菜单的类,用COM接口实现

static   char  THIS_FILE[] = __FILE__;

一个在AutoCAD里添加菜单的类,用COM接口实现

#define  new DEBUG_NEW

一个在AutoCAD里添加菜单的类,用COM接口实现

#endif

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

static  CStringArray stcMyTopMenuNames; // 存储新添加的CAD顶级菜单项名称

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

//

一个在AutoCAD里添加菜单的类,用COM接口实现

//  Construction/Destruction

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

//

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

CAddCADFrameMenu::CAddCADFrameMenu()

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 m_menuCount = 0;

一个在AutoCAD里添加菜单的类,用COM接口实现

 m_TopMenuNames.RemoveAll();

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

CAddCADFrameMenu:: ~ CAddCADFrameMenu()

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 int num = m_menus.GetSize();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 for (int i=0; i<num; i++) ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  if (m_menus.GetAt(i) != NULL) 

一个在AutoCAD里添加菜单的类,用COM接口实现

   delete m_menus[i];

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

int  CAddCADFrameMenu::CCADMenuArray::AddMenu(CADMenu &  menu)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 CADMenu* pMenu = new CADMenu;

一个在AutoCAD里添加菜单的类,用COM接口实现

 sprintf(pMenu->name, menu.name);

一个在AutoCAD里添加菜单的类,用COM接口实现

 sprintf(pMenu->order, menu.order);

一个在AutoCAD里添加菜单的类,用COM接口实现

 return Add(pMenu);

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

int  CAddCADFrameMenu::CCADMenuArray::AddMenu( const   char *  menuName,  const   char *  command)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 if (sizeof(menuName) > 63) ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

#ifdef _DEBUG

一个在AutoCAD里添加菜单的类,用COM接口实现

  acutPrintf("menuName'%s'长度超出范围 ", menuName);

一个在AutoCAD里添加菜单的类,用COM接口实现

#endif  

一个在AutoCAD里添加菜单的类,用COM接口实现

  return -99; 

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 if (sizeof(command) > 63) ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

#ifdef _DEBUG

一个在AutoCAD里添加菜单的类,用COM接口实现

  acutPrintf("command'%s'长度超出范围 ", command);

一个在AutoCAD里添加菜单的类,用COM接口实现

#endif  

一个在AutoCAD里添加菜单的类,用COM接口实现

  return -99; 

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 CADMenu* pMenu = new CADMenu;

一个在AutoCAD里添加菜单的类,用COM接口实现

 sprintf(pMenu->name, menuName);

一个在AutoCAD里添加菜单的类,用COM接口实现

 if (command != NULL)

一个在AutoCAD里添加菜单的类,用COM接口实现

  sprintf(pMenu->order, command);

一个在AutoCAD里添加菜单的类,用COM接口实现

 return Add(pMenu); 

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

CAddCADFrameMenu::CCADMenuArray:: ~ CCADMenuArray()

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 for (int i=0; i<m_nSize; i++) ...{

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  if (GetAt(i) != NULL) ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   delete GetAt(i);

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现

 } 

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

void  CAddCADFrameMenu::AddSubMenu( const   char *  menuName, 

一个在AutoCAD里添加菜单的类,用COM接口实现

           const   char *  command)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 RXASSERT(menuName != NULL);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 if (m_menuCount == 0) ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

#ifdef _DEBUG

一个在AutoCAD里添加菜单的类,用COM接口实现

  acutPrintf("添加子菜单%s前没有调用AddMenu添加一个菜单条目!无法添加子菜单 ", menuName);

一个在AutoCAD里添加菜单的类,用COM接口实现

#endif

一个在AutoCAD里添加菜单的类,用COM接口实现

  return;

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现

 m_menus[m_menuCount-1]->AddMenu(menuName, command);

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

void  CAddCADFrameMenu::AddSeparator()

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 m_menus[m_menuCount-1]->AddMenu("--", "");

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

void  CAddCADFrameMenu::AddSubSeparator()

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 m_menus[m_menuCount-1]->AddMenu("$--", "");

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

void  CAddCADFrameMenu::AddMenu( const   char *  menuName)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 m_TopMenuNames.Add(menuName);

一个在AutoCAD里添加菜单的类,用COM接口实现

 CCADMenuArray* pArr = new CCADMenuArray;

一个在AutoCAD里添加菜单的类,用COM接口实现

 m_menuCount = m_menus.Add(pArr) + 1;

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

bool  CAddCADFrameMenu::GetAcadApplication(LPDISPATCH  *  pVal)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... { 

一个在AutoCAD里添加菜单的类,用COM接口实现

 LPDISPATCH pDispatch = acedGetAcadWinApp()->GetIDispatch(TRUE);

一个在AutoCAD里添加菜单的类,用COM接口实现

 if (pDispatch == NULL)

一个在AutoCAD里添加菜单的类,用COM接口实现

  return false;

一个在AutoCAD里添加菜单的类,用COM接口实现

 *pVal = pDispatch;

一个在AutoCAD里添加菜单的类,用COM接口实现

 return true;

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

bool  CAddCADFrameMenu::GetAcadApplication(IAcadApplication  *& pAcadApp)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 LPDISPATCH  pDisp = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 if (!GetAcadApplication(&pDisp))

一个在AutoCAD里添加菜单的类,用COM接口实现

  return false;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 HRESULT hr = S_OK;

一个在AutoCAD里添加菜单的类,用COM接口实现

 hr = pDisp->QueryInterface(IID_IAcadApplication, (LPVOID*)&pAcadApp);

一个在AutoCAD里添加菜单的类,用COM接口实现

 if (FAILED(hr))

一个在AutoCAD里添加菜单的类,用COM接口实现

  return false;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 return true;

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

bool  CAddCADFrameMenu::GetLastMenuFromMenubar(CString  & sMenu)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadApplication *pAcad = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 if(!GetAcadApplication(pAcad))

一个在AutoCAD里添加菜单的类,用COM接口实现

  return false;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadMenuBar *pMenuBar=NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadPopupMenu  *pPopUpMenu=NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 pAcad->get_MenuBar(&pMenuBar);

一个在AutoCAD里添加菜单的类,用COM接口实现

    pAcad->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

    long numberOfMenus;

一个在AutoCAD里添加菜单的类,用COM接口实现

    pMenuBar->get_Count(&numberOfMenus);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 //得到菜单栏上面的最后一个菜单

一个在AutoCAD里添加菜单的类,用COM接口实现

 BSTR name;

一个在AutoCAD里添加菜单的类,用COM接口实现

 VARIANT vIndex;

一个在AutoCAD里添加菜单的类,用COM接口实现

 vIndex.vt=VT_I4;

一个在AutoCAD里添加菜单的类,用COM接口实现

 vIndex.lVal=numberOfMenus-1;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 pMenuBar->Item(vIndex,&pPopUpMenu);

一个在AutoCAD里添加菜单的类,用COM接口实现

 pMenuBar->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

 pPopUpMenu->get_NameNoMnemonic(&name);

一个在AutoCAD里添加菜单的类,用COM接口实现

 pPopUpMenu->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 sMenu.Format("%S",name);//debug 大写,用于转化LPWSTR类型字符串

一个在AutoCAD里添加菜单的类,用COM接口实现

 SysFreeString(name);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 return true;

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

bool  CAddCADFrameMenu::GetAcadMenuGroup(IAcadMenuGroup   ** pVal,LPCTSTR menuname)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadApplication *acadApp = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 HRESULT hr = S_OK;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 if(!GetAcadApplication(acadApp))

一个在AutoCAD里添加菜单的类,用COM接口实现

  return false;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 LPDISPATCH  pTempDisp = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadMenuGroups *mnuGrps = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 long cnt = 0, cntmnu=0;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 //得到菜单组集

一个在AutoCAD里添加菜单的类,用COM接口实现

 hr = acadApp->get_MenuGroups(&mnuGrps);

一个在AutoCAD里添加菜单的类,用COM接口实现

 if (FAILED(hr))

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  acadApp->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

  return false;

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现

 acadApp->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 mnuGrps->get_Count(&cnt);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 //得到菜单组

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadMenuGroup *mnuGrp = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadPopupMenus  *mnus = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadPopupMenu *pPopUpMenu=NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 VARIANT  vtName,vtMenu;

一个在AutoCAD里添加菜单的类,用COM接口实现

 vtName.vt = VT_I4;

一个在AutoCAD里添加菜单的类,用COM接口实现

 vtMenu.vt = VT_I4;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 BSTR  mnuName;

一个在AutoCAD里添加菜单的类,用COM接口实现

 bool found = false ;

一个在AutoCAD里添加菜单的类,用COM接口实现

 for (long i=0; i < cnt; i++)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  vtName.lVal = i;

一个在AutoCAD里添加菜单的类,用COM接口实现

  hr = mnuGrps->Item(vtName, &mnuGrp);

一个在AutoCAD里添加菜单的类,用COM接口实现

  if (FAILED(hr))

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   return false;

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  mnuGrp->get_Menus(&mnus);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  mnus->get_Count(&cntmnu);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  for(long j=0;j<cntmnu;j++)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   vtMenu.lVal=j;

一个在AutoCAD里添加菜单的类,用COM接口实现

   hr=mnus->Item(vtMenu,&pPopUpMenu);

一个在AutoCAD里添加菜单的类,用COM接口实现

   if(FAILED(hr))

一个在AutoCAD里添加菜单的类,用COM接口实现

    continue;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

   pPopUpMenu->get_Name(&mnuName);

一个在AutoCAD里添加菜单的类,用COM接口实现

   pPopUpMenu->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

   CString sMenuName(mnuName);

一个在AutoCAD里添加菜单的类,用COM接口实现

   SysFreeString(mnuName);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

   sMenuName.Replace("&","");//debug

一个在AutoCAD里添加菜单的类,用COM接口实现

   if(sMenuName.CompareNoCase(menuname)==0)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

   ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

    found=true;

一个在AutoCAD里添加菜单的类,用COM接口实现

    *pVal = mnuGrp;

一个在AutoCAD里添加菜单的类,用COM接口实现

    break;

一个在AutoCAD里添加菜单的类,用COM接口实现

   }

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  mnus->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  if(found)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   break;

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现

  else

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   mnuGrp->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 mnuGrps->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 return found;

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

bool  CAddCADFrameMenu::GetAcadMenuGroup(IAcadMenuGroup   ** pVal)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadApplication *acadApp = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 HRESULT hr = S_OK;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 if(!GetAcadApplication(acadApp))

一个在AutoCAD里添加菜单的类,用COM接口实现

  return false;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 LPDISPATCH  pTempDisp = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadMenuGroups *mnuGrps = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 long cnt = 0;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 //得到菜单组集

一个在AutoCAD里添加菜单的类,用COM接口实现

 hr = acadApp->get_MenuGroups(&mnuGrps);

一个在AutoCAD里添加菜单的类,用COM接口实现

 if (FAILED(hr))

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  acadApp->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

  return false;

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现

 acadApp->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 mnuGrps->get_Count(&cnt);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 //得到菜单组

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadMenuGroup *mnuGrp = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 VARIANT  vtName;

一个在AutoCAD里添加菜单的类,用COM接口实现

 vtName.vt = VT_I4;

一个在AutoCAD里添加菜单的类,用COM接口实现

 BSTR  grpName;

一个在AutoCAD里添加菜单的类,用COM接口实现

 bool found = false ;

一个在AutoCAD里添加菜单的类,用COM接口实现

 for (long i=0; i < cnt; i++)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  vtName.lVal = i;

一个在AutoCAD里添加菜单的类,用COM接口实现

  hr = mnuGrps->Item(vtName, &mnuGrp);

一个在AutoCAD里添加菜单的类,用COM接口实现

  if (FAILED(hr))

一个在AutoCAD里添加菜单的类,用COM接口实现

   continue;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  hr  = mnuGrp->get_Name(&grpName);

一个在AutoCAD里添加菜单的类,用COM接口实现

  CString cgrpName(grpName);

一个在AutoCAD里添加菜单的类,用COM接口实现

  SysFreeString(grpName);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  if (cgrpName.CompareNoCase("Acad")==0) 

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   found = true;

一个在AutoCAD里添加菜单的类,用COM接口实现

   *pVal = mnuGrp;

一个在AutoCAD里添加菜单的类,用COM接口实现

   break;

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现

  else

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   mnuGrp->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 mnuGrps->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 return found;

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

void  CAddCADFrameMenu::CreateMenus()

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 CMDIFrameWnd * pMainFrame = acedGetAcadFrame();

一个在AutoCAD里添加菜单的类,用COM接口实现

 pMainFrame->LockWindowUpdate();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 //得到菜单栏上面的最后一个菜单

一个在AutoCAD里添加菜单的类,用COM接口实现

 CString sName;

一个在AutoCAD里添加菜单的类,用COM接口实现

 if(!GetLastMenuFromMenubar(sName))

一个在AutoCAD里添加菜单的类,用COM接口实现

  return;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 sName.Replace("&","");//debug

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadMenuGroup *mnuGrp = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 if (!GetAcadMenuGroup(&mnuGrp,sName))

一个在AutoCAD里添加菜单的类,用COM接口实现

  return ;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 //得到所有菜单组

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadPopupMenus   *mnus = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

  IAcadPopupMenu   *mnu = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadPopupMenuItem  *mnuitem = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 HRESULT hr = S_OK;

一个在AutoCAD里添加菜单的类,用COM接口实现

 hr = mnuGrp->get_Menus(&mnus);

一个在AutoCAD里添加菜单的类,用COM接口实现

 long cnt = 0l;

一个在AutoCAD里添加菜单的类,用COM接口实现

 hr = mnus->get_Count(&cnt);

一个在AutoCAD里添加菜单的类,用COM接口实现

 int i = 0;

一个在AutoCAD里添加菜单的类,用COM接口实现

 int j = 0;

一个在AutoCAD里添加菜单的类,用COM接口实现

 int k = 0;

一个在AutoCAD里添加菜单的类,用COM接口实现

 VARIANT index;

一个在AutoCAD里添加菜单的类,用COM接口实现

 VariantInit(&index);

一个在AutoCAD里添加菜单的类,用COM接口实现

 V_VT(&index) = VT_I4;

一个在AutoCAD里添加菜单的类,用COM接口实现

 CArray<IAcadPopupMenu*, IAcadPopupMenu*> MnuAdrs; 

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 long lIndex=0;

一个在AutoCAD里添加菜单的类,用COM接口实现

 WCHAR MenuName[256];

一个在AutoCAD里添加菜单的类,用COM接口实现

 for (i = 0; i < m_menuCount; i++) 

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  CString tmpMenu=m_TopMenuNames[i];

一个在AutoCAD里添加菜单的类,用COM接口实现

  tmpMenu.Replace("&","");

一个在AutoCAD里添加菜单的类,用COM接口实现

  if(IsMenuExist(mnu,lIndex,tmpMenu,mnus))//处理二次加载

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   V_I4(&index) = lIndex;

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现

  else

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, m_TopMenuNames[i], -1, MenuName, 256); 

一个在AutoCAD里添加菜单的类,用COM接口实现

   mnus->Add(MenuName, &mnu); 

一个在AutoCAD里添加菜单的类,用COM接口实现

   V_I4(&index) = cnt++;

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  MnuAdrs.Add(mnu);

一个在AutoCAD里添加菜单的类,用COM接口实现

  mnu->InsertInMenuBar(index);

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadPopupMenu *MenuItem = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 int subMenuNum = 0;

一个在AutoCAD里添加菜单的类,用COM接口实现

 CCADMenuArray* Menus;

一个在AutoCAD里添加菜单的类,用COM接口实现

 WCHAR szSubMenu[256];

一个在AutoCAD里添加菜单的类,用COM接口实现

 WCHAR szSubMenuMacro[256];

一个在AutoCAD里添加菜单的类,用COM接口实现

 CString MenusName;

一个在AutoCAD里添加菜单的类,用COM接口实现

 CString Menusorder;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 for (j = 0; j < m_menuCount; j++) ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  Menus = m_menus.GetAt(j);

一个在AutoCAD里添加菜单的类,用COM接口实现

  subMenuNum = Menus->GetSize();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  for (k = 0; k < subMenuNum; k++) ...{ 

一个在AutoCAD里添加菜单的类,用COM接口实现

   mnu = MnuAdrs.GetAt(j);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

   if (!strcmp("--", Menus->GetAt(k)->name)) ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

    V_I4(&index) = k;

一个在AutoCAD里添加菜单的类,用COM接口实现

    mnu->AddSeparator(index, &mnuitem);

一个在AutoCAD里添加菜单的类,用COM接口实现

   }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

   else ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

    V_I4(&index) = k;    

一个在AutoCAD里添加菜单的类,用COM接口实现

    MenusName = Menus->GetAt(k)->name; 

一个在AutoCAD里添加菜单的类,用COM接口实现

    Menusorder = Menus->GetAt(k)->order;

一个在AutoCAD里添加菜单的类,用COM接口实现

    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, MenusName, -1, szSubMenu, 256); 

一个在AutoCAD里添加菜单的类,用COM接口实现

    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, Menusorder, -1, szSubMenuMacro, 256); 

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

    if (strcspn(Menus->GetAt(k)->name, "*") < (size_t)MenusName.GetLength())...{

一个在AutoCAD里添加菜单的类,用COM接口实现

     MenusName.TrimLeft('*');

一个在AutoCAD里添加菜单的类,用COM接口实现

     MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, MenusName, -1, szSubMenu, 256); 

一个在AutoCAD里添加菜单的类,用COM接口实现

     hr = mnu->AddSubMenu(index, szSubMenu, &MenuItem);

一个在AutoCAD里添加菜单的类,用COM接口实现

    }    

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

    else if (strcspn(Menus->GetAt(k)->name, "$") < (size_t)MenusName.GetLength() )...{        

一个在AutoCAD里添加菜单的类,用COM接口实现

     MenusName.TrimLeft('$');

一个在AutoCAD里添加菜单的类,用COM接口实现

     if(MenusName.Compare("--")==0)//添加子菜单的分隔符

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

     ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

      hr = MenuItem->AddSeparator(index, &mnuitem);

一个在AutoCAD里添加菜单的类,用COM接口实现

     }

一个在AutoCAD里添加菜单的类,用COM接口实现

     else

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

     ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

      MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, MenusName, -1, szSubMenu, 256); 

一个在AutoCAD里添加菜单的类,用COM接口实现

      hr = MenuItem->AddMenuItem(index, szSubMenu, szSubMenuMacro, &mnuitem);

一个在AutoCAD里添加菜单的类,用COM接口实现

     }

一个在AutoCAD里添加菜单的类,用COM接口实现

    }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

    else ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

     hr = mnu->AddMenuItem(index, szSubMenu, szSubMenuMacro, &mnuitem);

一个在AutoCAD里添加菜单的类,用COM接口实现

    }

一个在AutoCAD里添加菜单的类,用COM接口实现

   }

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 for (i=0; i<MnuAdrs.GetSize(); i++)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  MnuAdrs[i]->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现

 mnuitem->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

 mnus->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

 mnuGrp->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

 pMainFrame->UnlockWindowUpdate(); 

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 stcMyTopMenuNames.Copy(m_TopMenuNames);//将顶级菜单名存入静态数组中,卸载时使用

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 return ;

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

bool  CAddCADFrameMenu::IsMenuExist(IAcadPopupMenu  *& pMnu, long   & index, const   char   * mnuname,IAcadPopupMenus  * mnus)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 ASSERT(mnus!=NULL);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 long cnt = 0l;

一个在AutoCAD里添加菜单的类,用COM接口实现

 HRESULT hr = mnus->get_Count(&cnt);

一个在AutoCAD里添加菜单的类,用COM接口实现

 bool found = false;

一个在AutoCAD里添加菜单的类,用COM接口实现

 int curMenuIndex=-1;

一个在AutoCAD里添加菜单的类,用COM接口实现

 BSTR tempName;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

#ifdef _DEBUG

一个在AutoCAD里添加菜单的类,用COM接口实现

 acutPrintf("IsMenuExist cnt=%ld ",cnt);

一个在AutoCAD里添加菜单的类,用COM接口实现

#endif

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 //

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadPopupMenu *toolsMenu = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 for (long i=0; i < cnt; i++)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  VARIANT vtName;

一个在AutoCAD里添加菜单的类,用COM接口实现

  VariantInit(&vtName);

一个在AutoCAD里添加菜单的类,用COM接口实现

  V_VT(&vtName) = VT_I4;

一个在AutoCAD里添加菜单的类,用COM接口实现

  V_I4(&vtName) = i;

一个在AutoCAD里添加菜单的类,用COM接口实现

  hr = mnus->Item(vtName, &toolsMenu);

一个在AutoCAD里添加菜单的类,用COM接口实现

  if (FAILED(hr))

一个在AutoCAD里添加菜单的类,用COM接口实现

   return false;

一个在AutoCAD里添加菜单的类,用COM接口实现

  hr = toolsMenu->get_NameNoMnemonic(&tempName);

一个在AutoCAD里添加菜单的类,用COM接口实现

  CString mnuName(tempName);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

#ifdef _DEBUG

一个在AutoCAD里添加菜单的类,用COM接口实现

  acutPrintf(" %d,%s",i,mnuName);

一个在AutoCAD里添加菜单的类,用COM接口实现

#endif

一个在AutoCAD里添加菜单的类,用COM接口实现

  if(mnuName.Compare(mnuname)==0)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   index=i;

一个在AutoCAD里添加菜单的类,用COM接口实现

   pMnu=toolsMenu;

一个在AutoCAD里添加菜单的类,用COM接口实现

   return true;

一个在AutoCAD里添加菜单的类,用COM接口实现

  } 

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现

 pMnu=NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 return false;

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

void  CAddCADFrameMenu::CleanUpMenus()

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadMenuGroup *mnuGrp = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 for(int i=0;i<stcMyTopMenuNames.GetSize();i++)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  CString sMenu=stcMyTopMenuNames.GetAt(i);

一个在AutoCAD里添加菜单的类,用COM接口实现

  sMenu.Replace("&","");

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  if (!GetAcadMenuGroup(&mnuGrp,sMenu))

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

#ifdef _DEBUG

一个在AutoCAD里添加菜单的类,用COM接口实现

   acutPrintf("没有找到 %s 所属的菜单组,无法卸载。 ",sMenu);

一个在AutoCAD里添加菜单的类,用COM接口实现

#endif

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

//   mnuGrp->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

   continue;

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  //得到所有菜单组 

一个在AutoCAD里添加菜单的类,用COM接口实现

  IAcadPopupMenus  *mnus = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

  HRESULT hr = S_OK;

一个在AutoCAD里添加菜单的类,用COM接口实现

  hr = mnuGrp->get_Menus(&mnus);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ClearMenu(mnus,sMenu);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  mnus->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

  mnuGrp->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 stcMyTopMenuNames.RemoveAll();

一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

void  CAddCADFrameMenu::ClearMenu(IAcadPopupMenus  * mnus,LPCTSTR menuname)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

... {

一个在AutoCAD里添加菜单的类,用COM接口实现

 long cnt = 0l;

一个在AutoCAD里添加菜单的类,用COM接口实现

 HRESULT hr = mnus->get_Count(&cnt);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 //now get Tools menu

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadPopupMenu *toolsMenu = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 BSTR   tempName;

一个在AutoCAD里添加菜单的类,用COM接口实现

 VARIANT vtName;

一个在AutoCAD里添加菜单的类,用COM接口实现

 VariantInit(&vtName);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 bool found = false;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 for (long i=0; i < cnt; i++)...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  vtName.vt = VT_I4;

一个在AutoCAD里添加菜单的类,用COM接口实现

  vtName.lVal = i;

一个在AutoCAD里添加菜单的类,用COM接口实现

  hr = mnus->Item(vtName, &toolsMenu);

一个在AutoCAD里添加菜单的类,用COM接口实现

  if (FAILED(hr))

一个在AutoCAD里添加菜单的类,用COM接口实现

   return ;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  hr = toolsMenu->get_NameNoMnemonic(&tempName);

一个在AutoCAD里添加菜单的类,用COM接口实现

  CString mnuName(tempName);

一个在AutoCAD里添加菜单的类,用COM接口实现

  SysFreeString(tempName);

一个在AutoCAD里添加菜单的类,用COM接口实现

  if(mnuName.CompareNoCase(menuname)==0)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

  ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

   found = true;

一个在AutoCAD里添加菜单的类,用COM接口实现

   break;

一个在AutoCAD里添加菜单的类,用COM接口实现

  }

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 if (!found)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  acutPrintf("没有找到菜单 : %s ",menuname);

一个在AutoCAD里添加菜单的类,用COM接口实现

  return;

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 hr = toolsMenu->get_Count(&cnt);

一个在AutoCAD里添加菜单的类,用COM接口实现

 VARIANT vIndex;

一个在AutoCAD里添加菜单的类,用COM接口实现

 vIndex.vt = VT_I4;

一个在AutoCAD里添加菜单的类,用COM接口实现

 vIndex.lVal = cnt;

一个在AutoCAD里添加菜单的类,用COM接口实现

 IAcadPopupMenuItem *cmd1 = NULL;

一个在AutoCAD里添加菜单的类,用COM接口实现

 while(cnt--)

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 ...{

一个在AutoCAD里添加菜单的类,用COM接口实现

  vIndex.lVal=cnt;

一个在AutoCAD里添加菜单的类,用COM接口实现

  hr=toolsMenu->Item(vIndex,&cmd1);

一个在AutoCAD里添加菜单的类,用COM接口实现

  hr=cmd1->Delete();

一个在AutoCAD里添加菜单的类,用COM接口实现

  cmd1->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现

 }

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 toolsMenu->RemoveFromMenuBar();

一个在AutoCAD里添加菜单的类,用COM接口实现

 toolsMenu->Release();

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 mnus->RemoveMenuFromMenuBar(vtName);

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

 return;

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现

}

一个在AutoCAD里添加菜单的类,用COM接口实现
一个在AutoCAD里添加菜单的类,用COM接口实现