如题,我制作了一个ActiveX dll,里面有一个Form1窗体,我在该dll的Class1中定义了
Public Sub CreateMySelf(father As Long)
'    Set fMainForm = New frmMain
'    fMainForm.Show
    frmMain.Show , father
End Sub然后建立了一个Mdi程序,里面的菜单中添加了如下代码:
Private Sub mnu_File_Child_Click()
    Dim frm As Object
    Set frm = CreateObject("ku.class1")
    frm.CreateMySelf Me.hWnd
End Sub在运行该菜单指令时报错:
“没有MDI窗体可用于加载”    frm.CreateMySelf Me.hWnd请问该如何实现该功能?

解决方案 »

  1.   

    我找到了如下答案,from cdknet(cdksoft)
        加载一个Dll中的窗体到EXE的MDI感觉不太容易,反过来我们可以考虑在Dll中来解决,在Dll中接收一个对象参数,为Mid窗体Hwnd,再用   SetParent 这是个Api函数 ---- MyClass ----
    public sub ShowForm(ParentHwnd as long)    SetParent DllForm.Hwnd, ParentHwnd     
        DllForm.showend sub这样对ActiveX Dll有了限制,只能是用VB开发,而且要注册释放Dll Form但请各位解释一下什么叫做“注册释放Dll Form”。继续期待。请cdknet(cdksoft) 进来,我会给分!谢谢了!
      

  2.   

    而且目前还有个问题:我在MDI窗体里面加了个Picture,准备在左边作控制部分,用标准的Mdi子窗体会只能显示在Picture右边的部分,但用上面的方法创建的窗体会显示在Picture的上面。
    有什么方法可以解决这个问题吗?