本文整理汇总了C++中IAcadMenuGroup::get_Menus方法的典型用法代码示例。如果您正苦于以下问题:C++ IAcadMenuGroup::get_Menus方法的具体用法?C++ IAcadMenuGroup::get_Menus怎么用?C++ IAcadMenuGroup::get_Menus使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IAcadMenuGroup
的用法示例。
在下文中一共展示了IAcadMenuGroup::get_Menus方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CleanUpMenus
void AppMenu::CleanUpMenus()
{
IAcadMenuGroup* mnuGrp = NULL;
for( int i = 0; i < stcMyTopMenuNames.GetSize(); i++ )
{
CString sMenu = stcMyTopMenuNames.GetAt( i );
sMenu.Replace( _T( "&" ), _T( "" ) );
if ( !GetAcadMenuGroup( &mnuGrp, sMenu ) )
{
#ifdef _DEBUG
acutPrintf( _T( "没有找到 %s 所属的菜单组,无法卸载。 " ), sMenu );
#endif
// mnuGrp->Release();
continue;
}
//得到所有菜单组
IAcadPopupMenus* mnus = NULL;
HRESULT hr = S_OK;
hr = mnuGrp->get_Menus( &mnus );
ClearMenu( mnus, sMenu );
mnus->Release();
mnuGrp->Release();
}
stcMyTopMenuNames.RemoveAll();
}
示例2: CleanUpMenus
void CleanUpMenus()
{
IAcadMenuGroup *mnuGrp = NULL;
if (!getAcadMenuGroup(&mnuGrp))
return ;
//now get all the popup menus
IAcadPopupMenus *mnus = NULL;
HRESULT hr = S_OK;
hr = mnuGrp->get_Menus(&mnus);
long cnt = 0l;
hr = mnus->get_Count(&cnt);
mnuGrp->Release();
//now get Tools menu
IAcadPopupMenu *toolsMenu = NULL;
BSTR tempName;
VARIANT vtName;
bool found = false;
for (long i=0; i < cnt; i++)
{
vtName.vt = VT_I4;
vtName.lVal = i;
hr = mnus->Item(vtName, &toolsMenu);
if (FAILED(hr))
return ;
hr = toolsMenu->get_NameNoMnemonic(&tempName);
CString mnuName(tempName);
SysFreeString(tempName);
if(mnuName.CompareNoCase("Tools")==0)
{
found = true;
break;
}
}
mnus->Release();
if (!found)
{
acutPrintf("Could not found tools menu\n");
return;
}
hr = toolsMenu->get_Count(&cnt);
VARIANT vIndex;
vIndex.vt = VT_I4;
vIndex.lVal = cnt;
IAcadPopupMenu *polySampCmds = NULL;
IAcadPopupMenuItem *cmd1 = NULL;
long index = 0l;
for ( i=0; i < cnt; i++)
{
vtName.vt = VT_I4;
vtName.lVal = i;
hr = toolsMenu->Item(vtName, &cmd1);
hr = cmd1->get_Label(&tempName);
CString mnuName(tempName);
SysFreeString(tempName);
if(mnuName.CompareNoCase("PolySamp Application")==0)
{ index = i-1;
break;
}
}
vIndex.vt = VT_I4;
vIndex.lVal = index;
//Remove all the menus loaded by this program
IAcadPopupMenuItem *tempItem = NULL;
hr = toolsMenu->Item(vIndex, &tempItem);
hr = tempItem->Delete();
tempItem->Release();
hr = toolsMenu->Item(vIndex, &tempItem);
hr = tempItem->Delete();
tempItem->Release();
toolsMenu->Release();
return;
}
示例3: CreateMenus
void CreateMenus()
{
IAcadMenuGroup *mnuGrp = NULL;
if (!getAcadMenuGroup(&mnuGrp))
return ;
//now get all the popup menus
IAcadPopupMenus *mnus = NULL;
HRESULT hr = S_OK;
hr = mnuGrp->get_Menus(&mnus);
long cnt = 0l;
hr = mnus->get_Count(&cnt);
mnuGrp->Release();
//now get Tools menu
IAcadPopupMenu *toolsMenu = NULL;
BSTR tempName;
VARIANT vtName;
bool found = false;
for (long i=0; i < cnt; i++)
{
vtName.vt = VT_I4;
vtName.lVal = i;
hr = mnus->Item(vtName, &toolsMenu);
if (FAILED(hr))
return ;
hr = toolsMenu->get_NameNoMnemonic(&tempName);
CString mnuName(tempName);
if(mnuName.CompareNoCase("Tools")==0)
{
found = true;
break;
}
}
mnus->Release();
if (!found)
{
acutPrintf("Could not found tools menu\n");
return;
}
hr = toolsMenu->get_Count(&cnt);
VARIANT vtIndex;
vtIndex.vt = VT_I4;
vtIndex.lVal = cnt + 1;
IAcadPopupMenuItem *item1 = NULL;
hr = toolsMenu->AddSeparator(vtIndex, &item1);
item1->Release();
vtIndex.lVal = cnt + 2;
IAcadPopupMenu *polyMnu = NULL;
hr = toolsMenu->AddSubMenu(vtIndex, L"Polysamp Application", &polyMnu);
toolsMenu->Release();
IAcadPopupMenuItem *polycmds = NULL;
vtIndex.lVal = 0;
hr = polyMnu->AddMenuItem(vtIndex, L"POLY", L"_poly ", &polycmds);
vtIndex.lVal = 1;
hr = polyMnu->AddMenuItem(vtIndex, L"POLYEDIT", L"_polyedit ", &polycmds);
vtIndex.lVal = 2;
hr = polyMnu->AddMenuItem(vtIndex, L"TRANSACT", L"_TRANSACT ", &polycmds);
vtIndex.lVal = 3;
hr = polyMnu->AddMenuItem(vtIndex, L"HILITPOLY", L"_HILITPOLY ", &polycmds);
vtIndex.lVal = 4;
hr = polyMnu->AddMenuItem(vtIndex, L"CREATEINSERT", L"_CREATEINSERT ", &polycmds);
vtIndex.lVal = 5;
hr = polyMnu->AddMenuItem(vtIndex, L"HILITINSERT", L"_HILITINSERT ", &polycmds);
vtIndex.lVal = 6;
hr = polyMnu->AddMenuItem(vtIndex, L"USEDRAGDATA", L"_USEDRAGDATA ", &polycmds);
vtIndex.lVal = 7;
hr = polyMnu->AddMenuItem(vtIndex, L"HILITINSERT", L"_HILITINSERT ", &polycmds);
vtIndex.lVal = 8;
hr = polyMnu->AddMenuItem(vtIndex, L"HILITINSERT", L"_HILITINSERT ", &polycmds);
// polycmds->Release();
polyMnu->Release();
return;
}
示例4: CreateMenus
void AppMenu::CreateMenus()
{
CMDIFrameWnd* pMainFrame = acedGetAcadFrame();
pMainFrame->LockWindowUpdate();
//得到菜单栏上面的最后一个菜单
CString sName;
if( !GetLastMenuFromMenubar( sName ) )
return;
sName.Replace( _T( "&" ), _T( "" ) ); //debug
IAcadMenuGroup* mnuGrp = NULL;
if ( !GetAcadMenuGroup( &mnuGrp, sName ) )
return ;
//得到所有菜单组
IAcadPopupMenus* mnus = NULL;
IAcadPopupMenu* mnu = NULL;
IAcadPopupMenuItem* mnuitem = NULL;
HRESULT hr = S_OK;
hr = mnuGrp->get_Menus( &mnus );
long cnt = 0l;
hr = mnus->get_Count( &cnt );
int i = 0;
int j = 0;
int k = 0;
VARIANT index;
VariantInit( &index );
V_VT( &index ) = VT_I4;
CArray<IAcadPopupMenu*, IAcadPopupMenu*> MnuAdrs;
long lIndex = 0;
TCHAR MenuName[256];
for ( i = 0; i < m_menuCount; i++ )
{
CString tmpMenu = m_TopMenuNames[i];
tmpMenu.Replace( _T( "&" ), _T( "" ) );
if( IsMenuExist( mnu, lIndex, tmpMenu, mnus ) ) //处理二次加载
{
V_I4( &index ) = lIndex;
}
else
{
// MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (LPTSTR)(LPCTSTR)m_TopMenuNames[i], -1, MenuName, 256);
_tcscpy( MenuName, m_TopMenuNames[i] );
mnus->Add( MenuName, &mnu );
V_I4( &index ) = cnt++;
}
MnuAdrs.Add( mnu );
mnu->InsertInMenuBar( index );
}
IAcadPopupMenu* MenuItem = NULL;
int subMenuNum = 0;
CCADMenuArray* Menus;
TCHAR szSubMenu[256];
TCHAR szSubMenuMacro[256];
CString MenusName;
CString Menusorder;
for ( j = 0; j < m_menuCount; j++ )
{
Menus = m_menus.GetAt( j );
subMenuNum = Menus->GetSize();
for ( k = 0; k < subMenuNum; k++ )
{
mnu = MnuAdrs.GetAt( j );
if ( !_tcscmp( _T( "--" ), Menus->GetAt( k )->name ) )
{
V_I4( &index ) = k;
mnu->AddSeparator( index, &mnuitem );
}
else
{
V_I4( &index ) = k;
MenusName = Menus->GetAt( k )->name;
Menusorder = Menus->GetAt( k )->order;
_tcscpy( szSubMenu, MenusName );
_tcscpy( szSubMenuMacro, Menusorder );
//MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (LPTSTR)(LPCTSTR)MenusName, -1, szSubMenu, 256);
//MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (LPTSTR)(LPCTSTR)Menusorder, -1, szSubMenuMacro, 256);
if ( _tcscspn( Menus->GetAt( k )->name, _T( "*" ) ) < ( size_t )MenusName.GetLength() )
{
MenusName.TrimLeft( _T( '*' ) );
// MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (LPTSTR)(LPCTSTR)MenusName, -1, szSubMenu, 256);
_tcscpy( szSubMenu, MenusName );
hr = mnu->AddSubMenu( index, szSubMenu, &MenuItem );
}
else if ( _tcscspn( Menus->GetAt( k )->name, _T( "$" ) ) < ( size_t )MenusName.GetLength() )
{
MenusName.TrimLeft( _T( '$' ) );
if( MenusName.Compare( _T( "--" ) ) == 0 ) //添加子菜单的分隔符
{
hr = MenuItem->AddSeparator( index, &mnuitem );
}
else
{
//MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (LPTSTR)(LPCTSTR)MenusName, -1, szSubMenu, 256);
_tcscpy( szSubMenu, MenusName );
//.........这里部分代码省略.........
示例5: GetAcadMenuGroup
bool AppMenu::GetAcadMenuGroup( IAcadMenuGroup** pVal, LPCTSTR menuname )
{
IAcadApplication* acadApp = NULL;
HRESULT hr = S_OK;
if( !GetAcadApplication( acadApp ) )
return false;
LPDISPATCH pTempDisp = NULL;
IAcadMenuGroups* mnuGrps = NULL;
long cnt = 0, cntmnu = 0;
//得到菜单组集
hr = acadApp->get_MenuGroups( &mnuGrps );
if ( FAILED( hr ) )
{
acadApp->Release();
return false;
}
acadApp->Release();
mnuGrps->get_Count( &cnt );
//得到菜单组
IAcadMenuGroup* mnuGrp = NULL;
IAcadPopupMenus* mnus = NULL;
IAcadPopupMenu* pPopUpMenu = NULL;
VARIANT vtName, vtMenu;
vtName.vt = VT_I4;
vtMenu.vt = VT_I4;
BSTR mnuName;
bool found = false ;
for ( long i = 0; i < cnt; i++ )
{
vtName.lVal = i;
hr = mnuGrps->Item( vtName, &mnuGrp );
if ( FAILED( hr ) )
{
return false;
}
mnuGrp->get_Menus( &mnus );
mnus->get_Count( &cntmnu );
for( long j = 0; j < cntmnu; j++ )
{
vtMenu.lVal = j;
hr = mnus->Item( vtMenu, &pPopUpMenu );
if( FAILED( hr ) )
continue;
pPopUpMenu->get_Name( &mnuName );
pPopUpMenu->Release();
CString sMenuName( mnuName );
SysFreeString( mnuName );
sMenuName.Replace( _T( "&" ), _T( "" ) ); //debug
if( sMenuName.CompareNoCase( menuname ) == 0 )
{
found = true;
*pVal = mnuGrp;
break;
}
}
mnus->Release();
if( found )
{
break;
}
else
{
mnuGrp->Release();
}
}
mnuGrps->Release();
return found;
}