我的那些子窗体如何在添加了图片框的父窗体中显示?
来源:互联网 发布:网络高清视频监控系统 编辑:程序博客网 时间:2024/06/03 02:12
做机房收费系统主界面用的是一个多文档窗体。主界面如下:
做好菜单栏后,发现多文档界面不允许添加标签和文本框之类的控件,只能够借助于picture box 作为载体来添加。但是这样那些子窗体显示的时候就会被图片框给覆盖。还有一种方法就是另外在增加一个子窗体来显示让图片框上的内容。但是考虑到用户,个人觉得还是一个窗体操作起来更直观,方便。
为了可以让我的那些子窗体在父窗体中显示,setparent 函数被找到了。
setparent
声明方法:
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
函数功能:
该函数改变某个子窗口的父窗口。
函数原型:HWND SetParent(HWND hWndChild,HWND hWndNewParent)。
参数解释:第一个参数 hwndchild 是子窗体句柄,第二个参数 hwndnewparent 是父窗口句柄。
具体使用:在模块中声明setparent函数。然后在要成为子窗体的窗体加载事件中写入:
Call SetParent(Me.hwnd, frmmain.Picmain.hwnd)
Me.WindowState = 2
这样子窗体就可以在父窗体中显示出来了。可能有的人的的子窗体显示出来了,可是使用不了,也就是说无法获得焦点。这个时候就要注意了。看看你的子窗体的MDIchild 属性是不是为false 。 不是的话改为默认的false,然后再试。
再看setparent 函数
这个函数其实是很有意思的。首先看名字:set——parent 。用编程语言字面理解应该是 安排——容器。具体点就是给一个窗体安排放置它的容器。所以A ,B 窗体之前是没有从属关系的。我们要想让A窗体放置到B窗体中无需先让A 成为B 子窗体。我们只需要使用上边的两行代码就可以了。
其次是参数:hwndchild 和hwndnewparent 不光指的是窗体,也可以是控件。当然这个hWndNewParent应该是一个容器控件。不知道大家有没有发现在这个例子中:我的父窗口句柄用的是:
frmmain.Picmain.hwnd。其实这是一个容器控件picturebox 的句柄。在这个系统中,我需要的就是把我的子窗体放到父窗体的的图片框中显示,所以父窗口句柄是:frmmain.picmain.hwnd。
再次看setparent 函数就有了这个额为的发现:给控件设置容器控件;
给空间设置窗体;
给窗体设置父窗体;
还可以把窗体放到容器控件中。
怎么样?是不是发现这个setparent 函数的功能很多呢?
- 我的那些子窗体如何在添加了图片框的父窗体中显示?
- 子窗体在父窗体指定的控件中显示
- C#中如何处理子窗体在父窗体中显示的位置
- 在子窗体中动态给父窗体的dropdownlist添加新的值
- c#如何将子窗体显示到父窗体的容器(panel)控件中
- C#在MDI父窗体菜单中显示子窗体列表的设置方法
- MDI子窗体在父窗体中居中显示的设置
- C#在MDI父窗体菜单中显示子窗体列表的设置方法
- 关于子窗体嵌套在父窗体中显示的方法,winform中的选项卡
- MDI子窗体如何显示在picture控件的前面
- C# 子窗体在父窗体中显示位置
- 如何将主窗体的查询结果在子窗体显示
- 多文档的MFC中,如何去掉菜单栏,父窗体,子窗体最大化显示,关闭子窗体是去掉保存提示
- 如何在子线程中操作窗体上的控件
- 如何在子线程中操作窗体上的控件
- 如何在子线程中操作窗体上的控件
- 如何在子线程中操作窗体上的控件
- 如何在子线程中操作窗体上的控件
- svn仓库提交监听工具
- 从那一天起,你就成了我的全部
- V$LOCK视图中的ID1和ID2含义 测试
- poj 1106 Transmitters(极角排序)
- 如何获取ResultSet的行数和列数
- 我的那些子窗体如何在添加了图片框的父窗体中显示?
- CentOS命令大全
- VC6.0之Debug调试总结
- 风柔月清,吾爱在浅秋
- 排列组合——隔板法
- Linux(一)——从历史开始
- 如何安装CSF防火墙
- 内核线程 + 下半部(软中断,工作队列)
- tomcat6.0.35 作成系统服务 及jvm参数设置