![]() |
【转帖】[求助] menu加载 (奇怪的菜单反复)(问题已解决)
[求助] menu加载 (奇怪的菜单反复)(问题已解决)
[求助] menu加载 (奇怪的菜单反复)(问题已解决) 1。dsf.arx,acad.rx 放到了acad0目录下 2。mymenu.mnu,编译成了mymenu.mnc,放到了support目录下 acad.rx完全代码如下: dsf.arx dsf.arx初始化代码如下: void initapplication() { // note: do not edit the following lines. //{{afx_arx_init acedregcmds->addcommand("asdk_cmd", "ofset","ofset", acrx_cmd_modal, ofset); //}}afx_arx_init // todo: add your initialization functions loadmenu(); } void loadmenu() { acedcommand(rtstr,"menu",rtstr,"dsfmenu.mnc",rtstr,"",0); } mymenu.mnu完全代码如下: //这一段是关键,缺少菜单组名,就无法完成加载,偶然用menuload加载时发现的。 ***menugroup=dsfmenu ***pop1 **file id_menu_file [文件(&f)] id_file_open [打开(&o)... ctrl+o]^c^c_open id_file_quit [退出(&x)]^c^c_quit ***pop2 **offset id_menu_offset [偏移(&o)] id_offset_start [开始(&o)]^c^c_ofset id_offset_undo [放弃(&u) ctrl+z]^c^c_u id_offset_redo [重做(&r) ctrl+y]^c^c_redo ***pop3 **view id_menu_view [视图(&v)] id_view_zoom [->缩放(&z)] id_view_realtime [实时]'_zoom ; [--] id_view_magnify [放大(&i)]'_zoom 2x id_view_shrink [缩小(&o)]'_zoom .5x [--] id_view_all [全部(&a)]'_zoom _all id_view_extend [<-范围(&e)]'_zoom _e [--] id_view_pan [平移(&p)]'_pan 运行acad.exe反应如下:(在运行之前一切指令正常) 1。dsf.arx加载上去了,用自定义的ofset命令探出 2。mymenu.mnc不加载,菜单无变化 3。在命令行中用menu命令加载mymenu.mnc,菜单成功显示 3。在命令行中输入appload 命令,加载/卸载应用程序对话框不出现。出现如下图提示 此主题相关图片如下: 用acad.rx加载的arx是在cad本身初始化完全完成之前就加载, 所以那个时候第一不保证菜单搜索路径可用, 第二不保证acedcommand可用(initapplication里面不应该有acedcommand之类的操作). 再说你的菜单名结尾, cad是会以为你的文件名里有空格而不会认为那是结尾的.. 加载菜单之后appload失效是因为你把cad自己的菜单已经拿掉了, cad有可能已经不认识appload这个命令了.. 要初始化时就改变菜单, 最好直接重写acad.mnu, 把原来的备份一个就是了. virtue is like a rich stone, best plain set. -- francis bacon, <of beauty> 鲜花一朵 1. 无意中看到acad0里面有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, 然后载入..每次自动寻找的菜单文件是上一次加载过的菜单. virtue is like a rich stone, best plain set. -- francis bacon, <of beauty> acad.exe启动时不加载自定义的arx, acad.mnx已经被重写成顶楼帖中的样子 启动acad.exe 显示的菜单是菜单1(自定义菜单) 关闭后, 再启动acad.exe 这次显示菜单2(不明菜单) 关闭后, 再启动acad.exe 显示菜单1 如果显示菜单2 的时候用menu命令手动加载自定义菜单acad.mns/acad.mnc/acad.mnu(acad菜单被我重写过了) 将显示菜单1 关闭,再启动,又显示菜单2了 -_- 感觉acad.exe启动的是和上次关闭时候不同的菜单 下面是菜单1 下面是菜单2 ...汗..不应该这样的啊..菜单2是windows mdi程序标准菜单, 说明cad找不到应该加载的菜单文件.. 怀疑是各个菜单文件之间不匹配造成cad混乱. 把support里面所有的acad菜单相关文件(.mnu, .mns., .mnc, .mnr, .mnl)都备份后删除, 然后把你的自定acad.mnu文件放进来, 再重启acad试一下. virtue is like a rich stone, best plain set. -- francis bacon, <of beauty> 除了.mnu文件之外,其他全部删除,然后重新在cad里键入menu命令,cad会自动生成其他诸如.mns., .mnc, .mnr, .mnl文件的。再此启动后,就一直是你的菜单。 如果你用自己定义的菜单,重新启动cad后,会自动找到你定义的菜单的路径的。 因为cad注册表中已经记录下你定义菜单的路径了。 可以查看 工具--选项--文件--菜单、帮助和其他文件名称 顶楼列出问题所在, 谢谢大家的帮助 |
所有的时间均为北京时间。 现在的时间是 05:48 PM. |