CAD设计论坛

 找回密码
 立即注册
论坛新手常用操作帮助系统等待验证的用户请看获取社区币方法的说明新注册会员必读(必修)
查看: 4219|回复: 2

[开发] 如何在右键菜单的末尾新增一个菜单项(VBA语言)

[复制链接]
发表于 2006-5-7 21:53 | 显示全部楼层 |阅读模式
右键菜单或快捷菜单,是包含在AutoCAD基础菜单组中的特殊菜单。这个菜单只在用户按住SHIFT键并点击鼠标右键时才出现。
( I6 F; D: @: u8 c/ q0 V7 s, ^$ E1 z2 j7 M3 F
9 R3 v" M/ Y8 H
在一个基础菜单组中,当一个菜单的ShortcutMenu属性为TRUE时,这个菜单就是快捷菜单。你可以遵循"为一个菜单添加新的菜单项"中列出的步骤为快捷菜单增加菜单项。
  J* n! |) J( C# t$ X8 g/ o  Y# ]7 S- J# X+ a8 n7 N
; I, s. k/ e1 r
新的菜单组可能有也可能没有一个快捷菜单。要想为一个菜单组建立一个快捷菜单,须遵循"建立新菜单"一章中列出的指示,并且要把POP0做为这个新菜单的标签。 ; \. Z- i! [/ k' T- n
* M/ S" P) R( v8 R& f; A

1 E5 M# t, Q$ k% l1 B. s2 q. A0 {7 @% i2 f0 l: b
以下示例如何在右键菜单的末尾新增菜单项"OpenDWG". 6 I7 w! l4 m0 }% s7 J2 e6 X. r3 v
0 S; S0 q& P/ v! m: G. B$ G: c0 J
5 I9 B! H" m$ t: J+ o7 h
Sub Ch6_AddMenuItemToshortcutMenu()
. R: `0 a" j* V  L, X9 h( \
1 m; z$ `9 T& a1 ]4 P3 hDim currMenuGroup As AcadMenuGroup   m7 T  ^' ^0 i# Y6 Q( n

5 F  r" V4 `- u* t8 A- ?Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0) ( O' V0 w8 [% M+ P! _

' r. o1 v% \7 A( i- f# O
- G4 l& X1 K3 i: L! t* b0 j
7 m9 D( q+ X. P'找到快捷菜单并赋值它为shortcutMenu变量
: l8 v( E  M9 m& V, o6 D$ @- B5 Q6 F
Dim scMenu As AcadPopupMenu
9 a% p" Q" _3 @( d' |. B
9 g! [6 ?9 ]  r1 H2 K' UDim entry As AcadPopupMenu
- z) e0 J% [# R, W8 M1 i* @( Q
4 O" h0 ]0 `7 s( K9 Y0 `For Each entry In currMenuGroup.Menus 3 N1 L7 D- }' F: [' _% t

. B1 V# q  M4 ]  K. t4 p: P4 _If entry.shortcutMenu = True Then
+ d% a: _( k. E; ^
/ \7 X5 F# x" t# f8 K3 g2 R3 dSet scMenu = entry 1 \+ F: e: u! b7 J$ @+ N+ l
. O% S3 F2 P3 @, ?. V0 c2 t% @) I
End If
* Z( t2 O# V  R0 M( y* S# _
0 Z3 v5 `0 J9 B. _Next entry
# ?! [7 |! n) X% B% V0 B  Z, P' N, N3 {4 g8 f9 M% x3 ]; @

( E. Y% G+ h6 s9 r6 p  b/ ]
2 E0 |! i$ A% E: J' 在快捷菜单中增加菜单项 - Q9 a* t2 R& i9 \) T8 w6 {
; u; W8 I, R4 b
Dim newMenuItem As AcadPopupMenuItem , o# u) N, d; R$ C) Z3 e

; f) N; A( r' A( E/ m4 w3 aDim openMacro As String 4 G. u( ^. h( I' {- T5 m. K

* r& x7 u7 R( A% [; `' 为宏赋值VBA表达式"ESC ESC _open "
( Z2 v" V& ]8 j5 S: B4 B' p$ ~* @3 P. R  V* f; Q
openMacro = Chr(3) + Chr(3) + Chr(95) + "open" + Chr(32) ( m4 T- _# q+ Q  [
7 p# ^1 m' q/ y/ B6 |* C, T2 ~

8 ]/ s' g; Q, x* ESet newMenuItem = scMenu.AddMenuItem _
0 o6 C0 _5 {+ A0 f3 e% C% V
) F# Z9 g6 j/ N("", Chr(Asc("&")) _ 4 D3 p6 j" z; D0 t4 k* h' J& h* n

4 \/ z! f0 W0 h0 b8 @+ "OpenDWG", openMacro) 7 _; R! R5 G" c6 _9 o/ e5 J1 i

/ z- S/ D3 Y( z4 U0 ^End Sub
发表于 2006-5-7 22:25 | 显示全部楼层
真的可以呀。谢谢楼主
发表于 2008-8-30 20:13 | 显示全部楼层

如果不想要OPEN命令,用别的命令能代替吗,比如显示个自己编辑的界面什么的

如果不想要OPEN命令,用别的命令能代替吗,比如显示个自己编辑的界面什么的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于|免责|隐私|版权|广告|联系|手机版|CAD设计论坛

GMT+8, 2026-9-6 00:58

CAD设计论坛,为工程师增加动力。

© 2005-2026 askcad.com. All rights reserved.

快速回复 返回顶部 返回列表