读书人

MDI窗体与子窗体的显示有关问题-(怎么

发布时间: 2012-10-14 14:55:07 作者: rapoo

MDI窗体与子窗体的显示问题--(如何让主窗体是被控件挡住的子窗体显示)

机房收费系统热火朝天的进行着,于此同时问题也是毫不留情的就来了,在MDI窗体中添加了picture控件后,子窗体不能显示就是我遇到的第一个问题。刚刚着手做系统遇到这样的问题,挺棘手的,当时在网上查过很多的资料,也没找到。今天在这里分享分享我解决这个问题的经验

经验一:这个办法用起来虽说子窗体显示了,但是我个人觉得有点偷懒。

子窗体不能显示出来,那是因为被picture控件给挡住了,那么怎么让它到前面来呢,我就想到了隐藏picture控件,于是在我需要显示其他窗体的时候,我就把picture隐藏,这样子窗体就出来了,然后在我关闭子窗体的时候,我在显示picture控件 。但这样做却有很多弊端,显示子窗体的时候,我就看不到主窗体上的内容了。于是我不得不找其他的办法 从根本上解决这个问题

经验二 :经过查找,我发现可以利用API函数来解决这个问题(结果是显而易见的,很有效)

所需要的API函数 :SetParen

具体做法:1. 首先我们要在相应的模块中声明这个函数,在VB6.0的API浏览器里面就可以找到这段声明的代码

Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

2.写好声明后就是应用的部分了,当我们单机MDI窗体上的菜单想要显示另一个子窗体时,我们在单机菜单的Click 事件中

按如下格式:SetParent frmInquireStudent.hWnd,frmMain.hWnd (这里我以我自己的代码为例子)

3. 格式:setParent 你要显示的子窗体名称.hWnd, MDI窗体(即你的MDI窗体名称).hWnd

4. 按照上面的三个步骤写好后,子窗体是显示了,但是显示的是和MDI主窗体一样大的一个边框,只有点击最大化时,才能全看到,这时我们九需要改变一下窗体的大小,在加载窗体时,用相应的代码来确定子窗体的大小 例如:

Me.Width = 数字

Me.Height= 数字

具体数字就很据自己的需要设定了 ,这样窗体就可以显示了。

既看到了子窗体,又看到了主窗体上的内容 ,感觉真是不错 !

在此也顺便写一下 SetParent 这个API 函数的用法

SetParent是一个API函数,它的作用是为一个物体指定一个新的父窗体。(父窗体严格来说应该是容器).也就是把一个物体转到另一个物体上去

Setparent

语法是:

Setparent 物体句柄,目标句柄

发现问题并解决问题,听起来似乎很煎熬,但身在其中的我却感觉到这是个享受的过程。每天都能收获新的知识,我想这些也在慢慢的充实着我,改变着我,并且会带给我巨大的财富吧。



读书人网 >其他数据库

热点推荐