找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 506|回复: 3

[求助]:创建菜单和工具条

[复制链接]
发表于 2003-4-7 10:46:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何使用ARX创建菜单和工具条?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-4-7 19:45:58 | 显示全部楼层
使用AutoCAD COM接口
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-30 14:16:30 | 显示全部楼层
能不能给各例子
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-30 20:55:48 | 显示全部楼层
用COM加载的菜单年
void YHLloadmenu()
{
        // TODO: Implement the command
        try
        {
                IAcadApplication  bsApp( acedGetAcadWinApp()->GetIDispatch( TRUE ) );
                IAcadMenuBar      bsMenuBar( bsApp.GetMenuBar() );
               
                long              numofMenus;
                numofMenus = bsMenuBar.GetCount();

                IAcadMenuGroups   bsGroups( bsApp.GetMenuGroups() );

                VARIANT index;
                ::VariantInit( &index );
                index.vt = VT_I4;
                index.lVal = 0;

                IAcadMenuGroup   bsGroup( bsGroups.Item( index ) );

                IAcadPopupMenus  bsppMenus( bsGroup.GetMenus() );

                CString  strMenuName = "绘制各段(&K)";
                CString  strName     = "拖拽图块(&Z)";
               
                VARIANT item;
                ::VariantInit( &item );
                item.vt = VT_BSTR;
                item.bstrVal = strMenuName.AllocSysString();

                IDispatch* pDisp = NULL;
               
                TRY
                {
                        pDisp = bsppMenus.Item( COleVariant( strMenuName ) );
                        pDisp->AddRef();
                }
                CATCH ( COleDispatchException,e )
                {       
                }
                END_CATCH;

                IDispatch* pDisp2 = NULL;
               
                VARIANT item2;
                ::VariantInit( &item2 );
                item2.vt = VT_BSTR;
                item2.bstrVal = strName.AllocSysString();

                TRY
                {
                        pDisp2 = bsppMenus.Item( COleVariant( strName ) );
                        pDisp2->AddRef();
                }
                CATCH ( COleDispatchException,e )
                {       
                }
                END_CATCH;

                // 加载第一个菜单
                if ( NULL == pDisp )
                {
                        IAcadPopupMenu  bsppMenu( bsppMenus.Add( strMenuName ) );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 0;
                        bsppMenu.AddMenuItem( index,"混合过滤段(&H)","_drawingHHGLD\n" );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 1;
                        bsppMenu.AddMenuItem( index,"盘管加湿段(&P)","_drawingHHGLD\n" );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 2;
                        bsppMenu.AddMenuItem( index,"风机段(&F)","_drawingHHGLD\n" );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 3;
                        bsppMenu.AddMenuItem( index,"中效过滤段(&M)","_drawingHHGLD\n" );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 4;
                        bsppMenu.AddMenuItem( index,"送风段(&S)","_drawingHHGLD\n" );

                        pDisp = bsppMenu.m_lpDispatch;
                        pDisp->AddRef();
                }

                IAcadPopupMenu  bsppMenu( pDisp );
                if ( !bsppMenu.GetOnMenuBar() )
                {
                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = numofMenus - 1;
                        bsppMenu.InsertInMenuBar( index );
                }
                else
                {
                        bsppMenus.RemoveMenuFromMenuBar( item );
                }
                pDisp->Release();

                // 加载第二个菜单
                if ( NULL == pDisp2 )
                {
                        IAcadPopupMenu  bsppMenu( bsppMenus.Add( strName ) );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 0;
                        bsppMenu.AddMenuItem( index,"过滤器主视图(&M)","_TKGLQMAIN\n" );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 1;
                        bsppMenu.AddMenuItem( index,"过滤器俯视图(&G)","_TKGLQDOWN\n" );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 2;
                        bsppMenu.AddSeparator( index );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 3;
                        bsppMenu.AddMenuItem( index,"风机(&F)","_TKFJMAIN\n" );
                       
                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 4;
                        bsppMenu.AddMenuItem( index,"照明灯(&D)","_TKZMDMAIN\n" );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 5;
                        bsppMenu.AddSeparator( index );

                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 6;
                        bsppMenu.AddMenuItem( index,"检查门(&C)","_TKJCMCIRCLE\n" );
                       
                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = 7;
                        bsppMenu.AddMenuItem( index,"检查门(&R)","_TKJCMREC\n" );

                        pDisp2 = bsppMenu.m_lpDispatch;
                        pDisp2->AddRef();
                }

                IAcadPopupMenu  bsppMenu2( pDisp2 );
                if ( !bsppMenu2.GetOnMenuBar() )
                {
                        ::VariantInit( &index );
                        index.vt = VT_I4;
                        index.lVal = numofMenus - 1;
                        bsppMenu2.InsertInMenuBar( index );
                }
                else
                {
                        bsppMenus.RemoveMenuFromMenuBar( item );
                }
                pDisp2->Release();
               
                ::VariantClear( &index );
                ::VariantClear( &item );
        }
        catch ( COleDispatchException& e )
        {
                e.ReportError();
                e.Delete();
        }
        catch (...)
        {
                // do nothing
        }
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 00:00 , Processed in 0.241140 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表