34.3.1实例1创建新的菜单文件“user.mns”
Step1定义菜单组
(1)打开记事本程序,创建一个新的文本文件。
(2)在文件中输入如下代码。
//
//SampleMenuFile
//
***MENUGROUP=USER
即定义该菜单文件属于“USER”菜单组。
Step2定义辅助菜单
在上一步骤输入的代码后继续输入如下代码:
***AUX2
//Shift button
$P0=SHORTCUT$p0=*
该代码定义用户在使用Shift 右键时所调用的快捷菜单“SHORTCUT”。
Step3定义下拉菜单和快捷菜单
在上一步骤输入的代码后继续输入如下代码:
***POP0
**SHORTCUT
ID_SM[%26amp;SampleMenu]
ID_S1[%26amp;PolylinetCtrl 3]^C^C_pline
ID_S2[%26amp;Array...tCtrl 4]^C^C_array
[--]
ID_S3[-%26gt;SubMenu]
ID_S31[SubMenu1]^C^C
ID_S32[%26lt;-SubMenu2...]^C^C
[--]
ID_S4[ImageMenu...]$I=USER.IMAGE_MENU$I=USER.*
ID_S5["DisableMenu]^C^C
ID_S6[!.CheckedMenu]^C^C
***POP14
**PULL_DOWN
ID_SM[%26amp;SampleMenu]
ID_S1[%26amp;PolylinetCtrl 3]^C^C_pline
ID_S2[%26amp;Array...tCtrl 4]^C^C_array
[--]
ID_S3[-%26gt;SubMenu]
ID_S31[SubMenu1]^C^C
ID_S32[%26lt;-SubMenu2...]^C^C
[--]
ID_S4[ImageMenu...]$I=USER.IMAGE_MENU$I=USER.*
ID_S5["DisableMenu]^C^C
ID_S6[!.CheckedMenu]^C^C
注意上两部分代码分别定义了快捷菜单“SHORTCUT”和下拉菜单“PULL_DOWN”,这两部分定义的菜单项完全一样,不同之间仅在于菜单名称。
这部分定义的菜单分别给出了菜单的加速键、级联子菜单以及菜单项的显示控制等功能的定义。
Step4定义工具栏
在上一步骤输入的代码后继续输入如下代码:
***TOOLBARS
**TB_USER1
ID_TbUser1[_Toolbar("UserToolbars1",_Floating,_Show,100,100,1)]
ID_Pline[_Button("Polyline","ICON_16_PLINE","ICON_16_PLINE")]^C^C_pline
ID_Array[_Button("Array","ICON_16_ARRREC","ICON_16_ARRREC")]^C^C_array
ID_Image[_Button("Image",user16.bmp,user32.bmp)]$I=USER.IMAGE_MENU
$I=USER.*
**TB_USER2
ID_TbUser2[_Toolbar("UserToolbars2",_Floating,_Show,200,100,1)]
ID_Flyout[_Flyout("Flyout","ICON_16_PLINE","ICON_16_PLINE",
_OtherIcon,USER.TB_USER1)]
[--]
[_Control(_Color)]
[--]
[_Control(_Layer)]
以上代码定义了两个工具栏“TB_USER1”和“TB_USER2”。工具栏“TB_USER1”中包括三个按钮“Polyline”、“Array”和“Image”,其中“Image”按钮的图标资源为用户创建的两个位图文件“user16.bmp”和“user32.bmp”,并保存在AutoCAD的库搜索路径中。
工具栏“TB_USER2”中引用“TB_USER1”来定义了一个弹出式工具栏,同时还定义了两个控件“Color”和“Layer”。
Step5定义图像控件菜单
在上一步骤输入的代码后继续输入如下代码:
***IMAGE
**IMAGE_MENU
[NutImage]
[user(s1)]^C^C
[user(s2)]^C^C
[user(s3)]^C^C
[user(s4)]^C^C
[user(s5)]^C^C
[user(s6)]^C^C
以上代码定义了一个图像控件菜单,其中所用到的幻灯片和幻灯片库的创建,请参见第31章。由于该定义仅出于演示的目的,因此并没有给出具体的命令序列,用户可根据需要来添加。
Step6定义屏幕菜单
在上一步骤输入的代码后继续输入如下代码:
***SCREEN
**S
[MianMenu]^C^C^P(ai_rootmenus)^P
[Polyline]^C^C_pline
[Array...]^C^C_array
[SubMenu]$S=USER.SUBMENU
[ImageMenu...]$I=USER.IMAGE_MENU$I=USER.*
**SUBMENU2
[PrevMenu]$S=
[SubMenu1]^C^C
[SubMenu2]^C^C
以上代码定义了带有子菜单的屏幕菜单。
Step7定义加速键
在上一步骤输入的代码后继续输入如下代码:
***ACCELERATORS
ID_S1[CONTROL "3"]
ID_S2[CONTROL "4"]
["NUMPAD5"]@x^h
["NUMPAD6"]%26lt;0
["NUMPAD9"]%26lt;45
["NUMPAD8"]%26lt;90
["NUMPAD7"]%26lt;135
["NUMPAD4"]%26lt;180
["NUMPAD1"]%26lt;-135
["NUMPAD2"]%26lt;-90
["NUMPAD3"]%26lt;-45
以上代码中除了定义“Pline”命令和“Array”的快捷键以外,还定义了扩展坐标输入,即数字键区作如下修改:5键输入@符号,其他数字键输入小于号(%26lt;)和该键位置在数字键区中表示的角度值。这样用户来输入相对极坐标时可利用数字键快速输入,例如极坐标:@50%26lt;45,用户只需按数字键区的5键、数字“50”和数字键区的9键即可。
Step8定义菜单帮助
在上一步骤输入的代码后继续输入如下代码:
***HELPSTRINGS
ID_S1[Createsa2Dpolyline]
ID_S2[Createsmultiplecopiesofobjectsinapattern]
ID_S31[Thesample1forSubMenu]
ID_S32[Thesample2forSubMenu]
ID_S4[ThesampleforImeageMenu]
ID_S5[ThesampleforDisableMenu]
ID_S6[ThesampleforCheckedMenu]
以上代码给出了每个菜单项相应的提示。