比如点下Button1就调出DLL1中的Form1;点下Button2就调出DLL2中的Form2;
但现在的问题是如果先点了Button1是可以调出From1没错,再点Button2就调不出Form2了;同样,如果先点了Button2可以调出Form2,但再去点Button1就调不出Form1了。
看一下这段代码:
----------------------------------------------------------------
Dim th As Long
Dim F As Object
Set F = CreateObject("Func_AllReg.FuncCls_AllReg")
th = F.ShowForm(MainForm.FuncCon(0).hwnd)
Set F = Nothing
Set F = CreateObject("Func_SubReg.FuncCls_SubReg")
th = F.ShowForm(MainForm.FuncCon(1).hwnd)
Set F = Nothing
----------------------------------------------------------------
MainForm是主程序的窗口,FuncCon(i)是一个picturebox
th是返回的的DLL中窗口的句柄,上面这段代码两次的 th 的值是一样的,请高手指点一下,我对VB不太熟,谢谢!
6 个解决方案
#1
主要看看ShowForm这个函数是怎么根据picturebox的句柄来返回对DLL中窗口的。
我怀疑是重名了,第二次打开的时候还是在打开上一次打开了的窗体
我怀疑是重名了,第二次打开的时候还是在打开上一次打开了的窗体
#2
ShowForm函数的代码呢?
#3
lz代码贴的不全啊
按道理不该出现这种情况的
按道理不该出现这种情况的
#4
#5
真的是form名相同引起的,怎么在两个不同的DLL里也不能重名的,有点不理解
#6
因为你的主程序实例化的时候名称相同 dll中名称相同没关系,但主程序中不能相同.
#1
主要看看ShowForm这个函数是怎么根据picturebox的句柄来返回对DLL中窗口的。
我怀疑是重名了,第二次打开的时候还是在打开上一次打开了的窗体
我怀疑是重名了,第二次打开的时候还是在打开上一次打开了的窗体
#2
ShowForm函数的代码呢?
#3
lz代码贴的不全啊
按道理不该出现这种情况的
按道理不该出现这种情况的
#4
#5
真的是form名相同引起的,怎么在两个不同的DLL里也不能重名的,有点不理解
#6
因为你的主程序实例化的时候名称相同 dll中名称相同没关系,但主程序中不能相同.