[求助] 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->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 [文件(&F)]<BR>ID_FILE_OPEN [打开(&O)... Ctrl+O]^C^C_open <BR>ID_FILE_QUIT [退出(&X)]^C^C_quit
***POP2<BR>**OFFSET<BR>ID_MENU_OFFSET [偏移(&O)]<BR>ID_OFFSET_START [开始(&O)]^C^C_ofset <BR>ID_OFFSET_UNDO [放弃(&U) Ctrl+Z]^C^C_u <BR>ID_OFFSET_REDO [重做(&R) Ctrl+Y]^C^C_redo
***POP3<BR>**VIEW<BR>ID_MENU_VIEW [视图(&V)]<BR>ID_VIEW_ZOOM [->缩放(&Z)]<BR>ID_VIEW_REALTIME [实时]'_zoom ;<BR> [--]<BR>ID_VIEW_MAGNIFY [放大(&I)]'_zoom 2x <BR>ID_VIEW_SHRINK [缩小(&O)]'_zoom .5x <BR> [--]<BR>ID_VIEW_ALL [全部(&A)]'_zoom _all <BR>ID_VIEW_EXTEND [<-范围(&E)]'_zoom _e <BR> [--]<BR>ID_VIEW_PAN [平移(&P)]'_pan
<FONT color=#ff0000>运行acad.exe反应如下:(在运行之前一切指令正常)</FONT>
1。dsf.arx加载上去了,用自定义的ofset命令探出
2。mymenu.mnc不加载,菜单无变化
3。在命令行中用menu命令加载mymenu.mnc,菜单成功显示
3。在命令行中输入appload 命令,加载/卸载应用程序对话框不出现。出现如下图提示<BR>
用acad.rx加载的ARX是在CAD本身初始化完全完成之前就加载, 所以那个时候第一不保证菜单搜索路径可用, 第二不保证acedCommand可用(initApplication里面不应该有acedCommand之类的操作).
再说你的菜单名结尾, CAD是会以为你的文件名里有空格而不会认为那是结尾的..
加载菜单之后appload失效是因为你把CAD自己的菜单已经拿掉了, CAD有可能已经不认识appload这个命令了..
要初始化时就改变菜单, 最好直接重写acad.mnu, 把原来的备份一个就是了. 鲜花一朵 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,又是自定义菜单
…………如此循环 -_- .....................................................................................................................
对不起偶说错了, 是acad.mns..
mnu文件不是加载时用的. CAD加载菜单是自动找mns文件, 然后找匹配的acad.mnc, 如果mnc文件比mns文件旧, CAD会自动编译mns, 然后载入..每次自动寻找的菜单文件是上一次加载过的菜单. <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 ...汗..不应该这样的啊..菜单2是Windows MDI程序标准菜单, 说明CAD找不到应该加载的菜单文件..
怀疑是各个菜单文件之间不匹配造成CAD混乱. 把SUPPORT里面所有的acad菜单相关文件(.mnu, .mns., .mnc, .mnr, .mnl)都备份后删除, 然后把你的自定acad.mnu文件放进来, 再重启ACAD试一下. 除了.mnu文件之外,其他全部删除,然后重新在CAD里键入menu命令,CAD会自动生成其他诸如.mns., .mnc, .mnr, .mnl文件的。再此启动后,就一直是你的菜单。
如果你用自己定义的菜单,重新启动CAD后,会自动找到你定义的菜单的路径的。
因为CAD注册表中已经记录下你定义菜单的路径了。
可以查看 工具--选项--文件--菜单、帮助和其他文件名称 顶楼列出问题所在,
谢谢大家的帮助
页:
[1]