让VB可以调用DLL控件中的窗体为MDI子窗体

让VB可以调用DLL控件中的窗体为MDI子窗体
让VB可以调用DLL控件中的窗体为MDI子窗体

让VB可以调用DLL控件中的窗体为MDI子窗体

一.目的:为了简化VB程序的模块化集成开发,使程序只要有对应的接

口,就可以直接调用,简化开发过程.

二.步骤

1.先建立一个标准的ActiveX DLL工程;

2.设置工程名称为:myfirst 如图

3.新建个窗体,空白就好了,也不用改属性

4.把类模块class1中的Instancing设为6

5.在class1模块中加入以下代码

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Sub SetMDIChild(ByVal lParenthWnd As Long)

Dim lResult As Long

lResult = SetParent(Form1.hwnd, lParenthWnd)

'lResult = SetWindowLong(Form1.hwnd, GWL_HWNDPARENT, lParenthWnd)

lResult = GetWindowLong(Form1.hwnd, GWL_EXSTYLE)

lResult = SetWindowLong(Form1.hwnd, GWL_EXSTYLE, lResult Or WS_EX_MDICHILD) Form1.Show

End Sub

6.生成myfirst.dll

7.新建一个空白标准工程,删掉原有的窗体,新建个MDI窗体,并

设为启动

8.在工程中引用myfirst.dll

9.加入如下代码

Public mdi_dllshow As New Class1

Private Sub MDIForm_Load()

Set mdi_dllshow = New Class1

mdi_dllshow.SetMDIChild (Me.hWnd)

End Sub

Private Sub MDIForm_Unload(Cancel As Integer)

Set mdi_dllshow = Nothing

End Sub

10.执行后的结果如图,会把DLL文件中的窗体以MDI子窗体加

载入程序里.

相关主题
相关文档
最新文档