cbse_smy 发表于 2005-10-1 09:26:00

关于VB DLL技术

在VB DLL中做个对话框,可是在ACAD 中引用这个DLL,然后调用对话框时发现,这个对话框是独立于CAD的,无法与CAD之间进行交流,请问各位高手能否设定该对话框的交窗口为CAD!

雪山飞狐_lzh 发表于 2005-10-2 10:28:00

在窗体里加入下列代码
<P>Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long<BR>Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long<BR>Private m_oApp As Object</P>
<P>Public Property Set Application(ByVal vNewValue As Object)<BR>&nbsp;&nbsp;&nbsp;&nbsp;Set m_oApp = vNewValue<BR>End Property</P>
<P>Private Sub Form_Load()<BR>&nbsp;&nbsp;&nbsp;&nbsp;SetParent Me.hwnd, GetParent(GetParent(m_oApp.ActiveDocument.hwnd))<BR>End Sub</P>
<P>类模块:</P>
<P>Private m_oApp As Object</P>
<P>Public Property Let Application(ByVal vNewValue)<BR>&nbsp;&nbsp;&nbsp;&nbsp;Set m_oApp = vNewValue<BR>End Property</P>
<P>Public Sub ShowForm()<BR>&nbsp;&nbsp;&nbsp;&nbsp;Set frmTest.Application = m_oApp<BR>&nbsp;&nbsp;&nbsp;&nbsp;frmTest.Show<BR>End Sub<BR></P>

cbse_smy 发表于 2005-10-3 13:56:00

<P>雪山飞狐版主,能否举例说明其用法,因我用时产生一个自动化错误!</P>
<P>在DLL文件中设置的窗体的名字应当是frmTest吧!</P>

cbse_smy 发表于 2005-10-3 14:25:00

请问能否给我一个调试好的DLL及源文件,以说明其用法,因我在使用时确实出现了一个自动化错误,起初以为是没有引用Acad Libabry,后来引用了还是出错,请高手解决此问题

jkbanana 发表于 2008-1-1 00:46:00

<p>新年好!</p><p>我用VB6.0做Active DLL在AutoCAD中使用。</p><p>目的是在类模块中调用窗体,获得几个输入参数.</p><p>在IDE中可以运行,但把它从IDE中导出,在VB6.0中却不能用。</p><p>不知道为什么?</p><p>VB6.0工程的描述</p><p>1.窗体名:Myform&nbsp; (从添加文件导入后属性显示为UserForm)</p><p>定义了一个文本框TextBox1和一个按钮CommandButton1</p><p>Private Sub CommandButton1_Click()<br/>&nbsp;&nbsp; str = TextBox1.Text<br/>&nbsp;&nbsp; Me.Hide<br/>End Sub</p><p>2.类模块名:Myclass</p><p>Public Sub aaa()<br/>&nbsp;&nbsp; Myform.Show<br/>End Sub</p><p>3.模块名:Myprog</p><p>Public str As String<br/>Public Sub main()<br/>Dim Class1 As New Myclass<br/>Class1.aaa<br/>MsgBox str<br/>End Sub</p><p>运行后,无法把窗体中的变量传给类模块中的过程使用。</p><p>并且,MsgBox str不等Class1.aaa执行完就执行了。</p><p><br/><br/>另外上面,雪山飞狐斑竹的程序太深奥,不明白。还是请雪山飞狐斑竹说明一下。</p><p></p>

jkbanana 发表于 2008-1-1 17:23:00

<p>终于能明白了。要用带模式窗体。</p><p>把类模块中的语句改为</p><p>Myform.Show vbModal</p><p>就可以了。</p>
页: [1]
查看完整版本: 关于VB DLL技术