7,759
社区成员
发帖
与我相关
我的任务
分享
'这里是动态弹出工程里的窗体
On Error GoTo Err_CommandBars_Execute
Dim frm As Form
Set frm = Forms.Add("这里是动态名字,比如frmLogin")
frm.Left = (MDIFrmMain.ScaleWidth - frm.Width) / 2
frm.Top = (MDIFrmMain.ScaleHeight - frm.Height) / 2
frm.Show
Set frm = Nothing
Exit_CommandBars_Execute:
Exit Sub
Err_CommandBars_Execute:
Exit Sub
Resume Exit_CommandBars_Execute
'---DLL CoffeeMonitor
Option Explicit
Public Enum cfeModality
cfeModal = vbModal
cfeModeless = vbModeless
End Enum
Public Sub ShowForm(Optional Modality As _
cfeModality = cfeModal)
Dim frm As New TestForm
If Modality = cfeModeless Then
frm.Caption = "TestForm-Modeless"
Else
frm.Caption = "TestForm-Modeless"
End If
frm.Show Modality
End Sub
'--窗体
Option Explicit
Private mcmnTest As CoffeeMonitor
Private Sub Form_Load()
Set mcmnTest = New CoffeeMonitor
End Sub
Private Sub cmdModal_Click()
mcmnTest.ShowForm cfeModal
End Sub
Private Sub cmdModeless_Click()
mcmnTest.ShowForm cfeModeless
End Sub
'Business DLL里写的类模块 clsShowFrom
Option Explicit
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Function Show(FrmName As String) As Object
On Error Resume Next
Dim frm As Form
Set frm = Forms.Add(FrmName)
Load FrmBusiness
SetParent FrmBusiness.hWnd, FindWindowEx(FindWindow(vbNullString, "MDIFormWJ"), 0, "MDIClient", "")
Debug.Print FindWindowEx(FindWindow(vbNullString, "MDIFormWJ"), 0, "MDIClicent", "")
Debug.Print FindWindow(vbNullString, "MDIFormWJ")
Set Show = FrmBusiness
FrmBusiness.Show
End Function
'另外一工程引用Business DLL,新建MDI窗体 MDIFormWJ
Private Sub 测试2_Click()
'传递的DLL名、类名、窗体名--三个信息保存在某菜单表中
Dim obj As Object
Set obj = CreateObject("Business.clsShowFrom")
obj.Show ("FrmBusiness")
' Dim c As New clsShowFrom
' c.Show ("FrmBusiness")
End Sub