明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2176|回复: 5

关于VB DLL技术

[复制链接]
发表于 2005-10-1 09:26:00 | 显示全部楼层 |阅读模式
在VB DLL中做个对话框,可是在ACAD 中引用这个DLL,然后调用对话框时发现,这个对话框是独立于CAD的,无法与CAD之间进行交流,请问各位高手能否设定该对话框的交窗口为CAD!
发表于 2005-10-2 10:28:00 | 显示全部楼层
在窗体里加入下列代码

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private m_oApp As Object

Public Property Set Application(ByVal vNewValue As Object)
    Set m_oApp = vNewValue
End Property

Private Sub Form_Load()
    SetParent Me.hwnd, GetParent(GetParent(m_oApp.ActiveDocument.hwnd))
End Sub

类模块:

Private m_oApp As Object

Public Property Let Application(ByVal vNewValue)
    Set m_oApp = vNewValue
End Property

Public Sub ShowForm()
    Set frmTest.Application = m_oApp
    frmTest.Show
End Sub

 楼主| 发表于 2005-10-3 13:56:00 | 显示全部楼层

雪山飞狐版主,能否举例说明其用法,因我用时产生一个自动化错误!

在DLL文件中设置的窗体的名字应当是frmTest吧!

 楼主| 发表于 2005-10-3 14:25:00 | 显示全部楼层
请问能否给我一个调试好的DLL及源文件,以说明其用法,因我在使用时确实出现了一个自动化错误,起初以为是没有引用Acad Libabry,后来引用了还是出错,请高手解决此问题
发表于 2008-1-1 00:46:00 | 显示全部楼层

新年好!

我用VB6.0做Active DLL在AutoCAD中使用。

目的是在类模块中调用窗体,获得几个输入参数.

在IDE中可以运行,但把它从IDE中导出,在VB6.0中却不能用。

不知道为什么?

VB6.0工程的描述

1.窗体名:Myform  (从添加文件导入后属性显示为UserForm)

定义了一个文本框TextBox1和一个按钮CommandButton1

Private Sub CommandButton1_Click()
   str = TextBox1.Text
   Me.Hide
End Sub

2.类模块名:Myclass

Public Sub aaa()
   Myform.Show
End Sub

3.模块名:Myprog

Public str As String
Public Sub main()
Dim Class1 As New Myclass
Class1.aaa
MsgBox str
End Sub

运行后,无法把窗体中的变量传给类模块中的过程使用。

并且,MsgBox str不等Class1.aaa执行完就执行了。



另外上面,雪山飞狐斑竹的程序太深奥,不明白。还是请雪山飞狐斑竹说明一下。

发表于 2008-1-1 17:23:00 | 显示全部楼层

终于能明白了。要用带模式窗体。

把类模块中的语句改为

Myform.Show vbModal

就可以了。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 11:52 , Processed in 0.159330 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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