pqs001 发表于 2005-5-10 22:43:00

[求助] menu加载 (奇怪的菜单反复)(问题已解决)

本帖最后由 作者 于 2005-5-17 10:51:01 编辑 <br /><br /> 1。dsf.arx,acad.rx 放到了acad2000目录下



2。mymenu.mnu,编译成了mymenu.mnc,放到了support目录下


<FONT color=#ff0000>acad.rx完全代码如下:</FONT>


dsf.arx


<FONT color=#ff0000>dsf.arx初始化代码如下:</FONT>


void InitApplication()<BR>{<BR>        // NOTE: DO NOT edit the following lines.<BR>        //{{AFX_ARX_INIT<BR>        acedRegCmds-&gt;addCommand("ASDK_CMD", "OFSET","OFSET", ACRX_CMD_MODAL, ofset);<BR>        //}}AFX_ARX_INIT<BR>        // TODO: add your initialization functions<BR>        loadmenu();<BR>}


void loadmenu()<BR>{<BR>        acedCommand(RTSTR,"menu",RTSTR,"dsfmenu.mnc",RTSTR,"",0);<BR>} <BR>


<FONT color=#ff0000>mymenu.mnu完全代码如下:</FONT>


<FONT face="Wide Latin" color=#e61ae6></FONT>       


<FONT face="Wide Latin" color=#e61ae6>//这一段是关键,缺少菜单组名,就无法完成加载,偶然用menuload加载时发现的。</FONT>


<FONT face="Wide Latin" color=#e61ae6>***MENUGROUP=DSFMENU</FONT><BR>


***POP1<BR>**FILE<BR>ID_MENU_FILE                [文件(&amp;F)]<BR>ID_FILE_OPEN                [打开(&amp;O)...        Ctrl+O]^C^C_open <BR>ID_FILE_QUIT                [退出(&amp;X)]^C^C_quit


***POP2<BR>**OFFSET<BR>ID_MENU_OFFSET                [偏移(&amp;O)]<BR>ID_OFFSET_START                [开始(&amp;O)]^C^C_ofset <BR>ID_OFFSET_UNDO                [放弃(&amp;U)        Ctrl+Z]^C^C_u <BR>ID_OFFSET_REDO                [重做(&amp;R)        Ctrl+Y]^C^C_redo


***POP3<BR>**VIEW<BR>ID_MENU_VIEW                [视图(&amp;V)]<BR>ID_VIEW_ZOOM                [-&gt;缩放(&amp;Z)]<BR>ID_VIEW_REALTIME        [实时]'_zoom ;<BR>                                                                                                                               [--]<BR>ID_VIEW_MAGNIFY                [放大(&amp;I)]'_zoom 2x <BR>ID_VIEW_SHRINK                [缩小(&amp;O)]'_zoom .5x <BR>                                                                                                                               [--]<BR>ID_VIEW_ALL                [全部(&amp;A)]'_zoom _all <BR>ID_VIEW_EXTEND                [&lt;-范围(&amp;E)]'_zoom _e <BR>                                                                                                               [--]<BR>ID_VIEW_PAN                [平移(&amp;P)]'_pan


<FONT color=#ff0000>运行acad.exe反应如下:(在运行之前一切指令正常)</FONT>


1。dsf.arx加载上去了,用自定义的ofset命令探出


2。mymenu.mnc不加载,菜单无变化


3。在命令行中用menu命令加载mymenu.mnc,菜单成功显示


3。在命令行中输入appload 命令,加载/卸载应用程序对话框不出现。出现如下图提示<BR>


pandoram 发表于 2005-5-13 09:30:00

用acad.rx加载的ARX是在CAD本身初始化完全完成之前就加载, 所以那个时候第一不保证菜单搜索路径可用, 第二不保证acedCommand可用(initApplication里面不应该有acedCommand之类的操作).


再说你的菜单名结尾, CAD是会以为你的文件名里有空格而不会认为那是结尾的..


加载菜单之后appload失效是因为你把CAD自己的菜单已经拿掉了, CAD有可能已经不认识appload这个命令了..


要初始化时就改变菜单, 最好直接重写acad.mnu, 把原来的备份一个就是了.

pqs001 发表于 2005-5-13 10:51:00

鲜花一朵

pqs001 发表于 2005-5-13 10:59:00

1.               无意中看到ACAD2000里面有appload.arx文件,用arx-load加载后,appload功能可用了~



        2. 删了acad.rx,不加载自定义的arx,单独来试菜单加载


现在把acad.mnu备份后,删除,用自己的mymenu.mnu改名为acad.mnu,


启动acad.exe,菜单还是标准菜单,


用menu命令加载acad.mnu,编译成.mnc,关闭acad


再启动acad.exe,自定菜单出来了,关闭acad


再启动acad.exe,菜单成了图示的样子,关闭acad


再启动acad.exe,又是自定义菜单


…………如此循环 -_-

pandoram 发表于 2005-5-13 12:09:00

.....................................................................................................................


对不起偶说错了, 是acad.mns..


mnu文件不是加载时用的. CAD加载菜单是自动找mns文件, 然后找匹配的acad.mnc, 如果mnc文件比mns文件旧, CAD会自动编译mns, 然后载入..每次自动寻找的菜单文件是上一次加载过的菜单.

pqs001 发表于 2005-5-13 22:16:00

<FONT color=#ff0000>acad.exe启动时不加载自定义的arx, acad.mnx已经被重写成顶楼帖中的样子<BR></FONT>
启动acad.exe


显示的菜单是菜单1(自定义菜单)


关闭后,


再启动acad.exe


这次显示菜单2(不明菜单)


关闭后,


再启动acad.exe


显示菜单1



如果显示菜单2 的时候用menu命令手动加载自定义菜单acad.mns/acad.mnc/acad.mnu(acad菜单被我重写过了)


将显示菜单1


关闭,再启动,又显示菜单2了       -_-

<BR>
<FONT color=#ff0000>感觉acad.exe启动的是和上次关闭时候不同的菜单</FONT>

<BR>
<FONT color=#0000ff>下面是菜单1</FONT><BR>uploadfile/2005-5/2005513221158751.jpg<BR>

<BR>
<FONT color=#0000ff>下面是菜单2</FONT><BR>uploadfile/2005-5/2005513221228119.jpg

pandoram 发表于 2005-5-16 10:46:00

...汗..不应该这样的啊..菜单2是Windows MDI程序标准菜单, 说明CAD找不到应该加载的菜单文件..


怀疑是各个菜单文件之间不匹配造成CAD混乱. 把SUPPORT里面所有的acad菜单相关文件(.mnu, .mns., .mnc, .mnr, .mnl)都备份后删除, 然后把你的自定acad.mnu文件放进来, 再重启ACAD试一下.

chenpool 发表于 2005-5-16 13:46:00

除了.mnu文件之外,其他全部删除,然后重新在CAD里键入menu命令,CAD会自动生成其他诸如.mns., .mnc, .mnr, .mnl文件的。再此启动后,就一直是你的菜单。


如果你用自己定义的菜单,重新启动CAD后,会自动找到你定义的菜单的路径的。


因为CAD注册表中已经记录下你定义菜单的路径了。


可以查看       工具--选项--文件--菜单、帮助和其他文件名称

pqs001 发表于 2005-5-17 10:51:00

顶楼列出问题所在,


       


谢谢大家的帮助
页: [1]
查看完整版本: [求助] menu加载 (奇怪的菜单反复)(问题已解决)