Bricscad应用程序窗口句柄
有人知道如何在Bricscad中访问应用程序窗口句柄吗 ;本人';我是金砖四国VBA新手,可以#039;在他们的帮助文件中找不到任何信息一直在玩这样的游戏:
将BricsApp作为一个应用程序进行Dim-AppHandle,只要长一点。但它所做的只是抛出一个运行时错误;对象变量或未设置块变量
Intelli sense将HWND显示为应用程序对象的属性,但有什么建议吗 ;长期目标是在长批量绘图程序期间关闭屏幕更新
谢谢
您将使用ThisDrawing.Application。HWND
干杯 您尚未设置变量BricsApp,可以尝试以下操作:
Function GetAppHandle(ByRef Drawing As AcadDocument) As Long
GetAppHandle = Drawing.Application.HWND
End Function
或者Dim BricsApp As AcadApplication
Dim AppHandle As Long
Set BricsApp = ThisDrawing.Application
AppHandle = BricsApp.HWND
明白了-意识到我没有';t设置BricsApp-这消除了错误,谢谢
有人知道如何通过VBA防止Bricscad中的屏幕更新吗
基本方法:
将BricsApp设置为应用程序,将其设置为该绘图。应用程序,然后使用:私有声明函数LockWindowUpdate Lib;用户32“;(ByVal hwndLock As Long)只要使用锁定窗口更新BricsApp。HWND要关闭更新,有什么建议吗 ;目标是在长批量绘图程序期间关闭屏幕更新 ;到目前为止,上述内容没有影响-屏幕继续更新-运行WIn7 64谢谢 嗯……你试过这个吗
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Integer, _
ByVal wMsg As Integer, _
ByVal wParam As Integer, _
ByVal lParam As Integer) As Integer
Private Const WM_SETREDRAW As Integer = 11
SendMessage hWnd, WM_SETREDRAW, CInt(False), 0
我得到一个;溢出“;运行SendMessage行时出错-但是,我对整个SendMessage功能完全不熟悉,因此,我可能无法正确设置它 ;本人';假设代码中的hwnd需要是bricsapp主窗口句柄
有什么解释吗;处决中发生了什么
Thx 从技术上讲,当您发送消息时,您正在抽取句柄引用的控件的消息流。WM_SETREDRAW标志告诉窗口放弃对绘制的调用。“通过”;“假”;防止在调用invalidate rectangle函数时更新句柄引用的控件。因此,您必须始终调用该函数一次以禁用它,再调用一次以启用它。如果你不';t您将无法访问应用程序窗口
您可以尝试将参数作为不同类型传递:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Any) As Integer
Private Const WM_SETREDRAW As Integer = 11
Public Sub LockUpdates(ByVal hWnd As Long, ByVal Redraw As Boolean)
SendMessage hWnd, WM_SETREDRAW, Redraw, ByVal 0&
End Sub
作为旁白,你不';如果处理打开的图形,则不必将应用程序窗口传递给函数,只需传递图形的句柄即可
如果要打开然后打印,可能需要禁用整个窗口。 谢谢基思-开始有意义了
要在完成(和出错时)恢复窗口更新,我会使用完全相同的函数调用,除了“0”之外;“真实”;而不是;False“假”:
SendMessage AppWinHandle,WM\u SETREDRAW,CInt(True),0也-最终参数的目的是什么;0;? 您将传递True作为第三个参数。第四个参数也不用于WM_SETREDRAW,如果使用该函数传递值,只要(在我的第二个示例中)可以使用值True或False..或Clng(True)Clng(False) 再次感谢基思-像一个迷人的工作,情节快速和干净
你能告诉我我在哪里吗;d查找有关使用SendMessage只是为了熟悉它的更多信息 ;例如,与hwnd可用的其他代码相对应的代码列表(即WM_SETREDRAW at 11)
I';今天我学到了很多-接下来我想知道如何显示进度条并抑制每次dwg打印时弹出的打印通知框
;
页:
[1]
2