《AutoCAD VBA开发精彩实例教程》 修订和补充材料
1、本书介绍该书由mccad、zfbj和另外一位作者共同编写,于2003年12月在清华出版社出版,预计12月25日左右将在全国书店上市,希望大家关注。
2、本帖内容
本帖将陆续发表对该书的修订和补充材料,请勿跟帖,如果对该书有何意见,或者关于书中问题的提问,请在新贴上发布。
3、本书封面中的一个小错误
封面上显示的定价是78元,是封面设计人员的一个小玩笑(不过这是本书的真正价值,呵呵)。该书的定价为36元,如果有变动,以书的实际定价为准。
4、欢迎读者对该书的内容提出意见,以便在后续版本中提供更精彩的内容。
正在看电子版,好多地方都没搜到纸质版 VBA中如何保持非模态对话框的焦点(AutoCAD会在任何时刻获得焦点,因此非模态对话框简直是无法使用!)
(1)在“工具箱”中的空白区域单击右键,从弹出的菜单中选择“附加控件”菜单项。
(2)在“附加控件”对话框中,引用“AcFocusCtrl”控件,单击“确定”按钮关闭该对话框。
(3)将添加的“AcFocusCtrl”控件放置在要作为非模态使用的窗体中,并在窗体的初始化事件中添加:Me.AcFocusCtrl1.KeepFocus = True
(4)在ThisDrawing模块中添加下面的语句:
Sub Test()
UserForm1.Show vbModeless
End Sub
(5)运行Test宏,就能观察一下非模态对话框的运行结果。 SelectEntity方法的错误处理(对书中3.5节内容的一点补充)
完整代码:
Private Const VK_ESCAPE = &H1B ' 代表Esc键
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
' 功能:判断用户是否按下某一个键
' 输入:代表键的常量(从API Viewer中获得)
' 调用:API函数GetAsyncKeyState
' 返回:如果用户按下了指定的键,返回True;否则返回False
' 示例:
' If CheckKey(&H1B) = True Then do sth
Private Function CheckKey(lngKey As Long) As Boolean
If GetAsyncKeyState(lngKey) Then
CheckKey = True
Else
CheckKey = False
End If
End Function
Sub Test()
Dim objSelect As AcadEntity
Dim basePnt As Variant
' 选择对象并判断类型
On Error Resume Next
Retry:
ThisDrawing.Utility.GetEntity objSelect, basePnt, "选择所要添加属性的对象:"
' 处理按下Esc键的错误
If objSelect Is Nothing Then
If CheckKey(VK_ESCAPE) = True Then
Exit Sub
Else
GoTo Retry
End If
End If
' 处理未选择到实体的错误
If Err <> 0 Then
Err.Clear
GoTo Retry
End If
' 执行你的操作
Debug.Print objSelect.ObjectName
End Sub is it passable to use? 恭喜出书! 多谢多谢。 能不能先读为快啊
要不你就给我一本 :) 到時送我一本, 我也好好學習前輩們的經驗呀. 我会买的,我支持明经 我也会买的。
有没有书的目录?先睹为快