调用DLL中打开窗体死掉的问题
【我想做的是】调用一个DLL中的某个自定义函数OpenForm,可以打开一个窗体,然后再调用又打开一个,2个窗体其实是一样的(都是对Form1的引用),并且可以同时操作2个窗体(即是以非模式窗体来打开)
【我的尝试】
用newForm.Show 不行,因为DLL不能打开非模式窗体。
所以我又试了ShowWindow newForm .hwnd, SW_SHOWNA '以非模式窗口打开
但是打开后窗体就会死掉无反应。
我又试了 SendMessage frmWB.hwnd, WM_CREATE , 0&, 0&
和 SendMessage frmWB.hwnd, WM_ACTIVATE, 0&, 0&
但是没有打开窗体(不知道我是不是用的不对,代码都在下面了,有的行不用时被'注释掉了,你懂的)
【问题】
请问高手,我怎么样才能实现【我想做的是】里面说的内容啊?谢谢
=========(下面是我的代码)=============
'先是要用的API声明
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_SHOW = 5 '用当前的大小和位置显示一个窗口,同时令其进入活动状态
Private Const SW_HIDE = 0 '隐藏窗口
Private Const SW_SHOWNA = 8 '用当前的大小和位置显示一个窗口,不改变活动窗口
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_CLOSE = &H10 '关闭窗口
Private Const WM_CREATE = &H1 '创建一个窗口
Private Const WM_ACTIVATE = &H6 '一个窗口被激活或失去激活状态
'下面是DLL里我要调用的函数,打开窗体
Public Function OpenForm() As Long
Dim newForm As Form1
Set newForm = New Form1
newForm.Left = 800
newForm.Top = 300
'ShowWindow newForm .hwnd, SW_SHOWNA '以非模式窗口打开(窗体会死掉)
'SendMessage frmWB.hwnd, WM_CREATE , 0&, 0& '这个根本没用,没能打开窗体
'SendMessage frmWB.hwnd, WM_ACTIVATE, 0&, 0& '这个也没用,没能打开窗体
newForm .Show 1 '以模式窗口打开
OpenForm = frmWB.hwnd
'Set frmWB = Nothing
'DoEvents
End Function