现在的位置: 首页 > 综合 > 正文

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

2013年03月19日 ⁄ 综合 ⁄ 共 1250字 ⁄ 字号 评论关闭

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

 

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

 

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

 

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

 

            所需要的API函数 :SetParen

 

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

            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 物体句柄,目标句柄

 

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

抱歉!评论已关闭.