请问怎么将ActiveX dll里的一个窗口show为Mdi窗口程序的子窗口?

trinity_2001 2003-10-30 12:23:54
如题,我制作了一个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

请问该如何实现该功能?
...全文
60 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cinder2003 2003-11-07
  • 打赏
  • 举报
回复
哎,自开主题,自己接分,这样的日子什么时候才能够结束呀!
Gelim 2003-10-31
  • 打赏
  • 举报
回复
up!
trinity_2001 2003-10-30
  • 打赏
  • 举报
回复
我找到了如下答案,from cdknet(cdksoft)
加载一个Dll中的窗体到EXE的MDI感觉不太容易,反过来我们可以考虑在Dll中来解决,在Dll中接收一个对象参数,为Mid窗体Hwnd,再用

SetParent 这是个Api函数

---- MyClass ----
public sub ShowForm(ParentHwnd as long)

SetParent DllForm.Hwnd, ParentHwnd
DllForm.show

end sub

这样对ActiveX Dll有了限制,只能是用VB开发,而且要注册释放Dll Form



但请各位解释一下什么叫做“注册释放Dll Form”。继续期待。

请cdknet(cdksoft) 进来,我会给分!

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

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧