高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】[求助] 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注册表中已经记录下你定义菜单的路径了。
可以查看 工具--选项--文件--菜单、帮助和其他文件名称
顶楼列出问题所在,
谢谢大家的帮助
|