在父窗体的picturebox上显示子窗体 (一)
来源:互联网 发布:网络主播聊天话题 编辑:程序博客网 时间:2024/05/18 23:27
如果按照层次结果来推理的话,我提出的这个问题是不可能解决的。原因在于子窗体位于MDIClient里。也就是说子窗体的父窗体是MDIClient,而放置在MDI中的PictureBox和MDIClient是同一级的。
当然只要有问题出现就会有解决问题的方法:
方法一:我们先来了解一下这种方法的根源:系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码,你在窗口一上按下鼠标时消息就会通过窗口一的句柄被发送到窗口一而不是窗口二。也就是说我们通过调用句柄来来破坏其程序本身的消息循环。
此方法用到的为setparent函数。
函数功能:该函数改变某个子窗口的父窗口。
函数原型:HWND SetParent(HWND hWndChild,HWND hWndNewParent);
参数:
hWndChild:子窗口句柄。
hWndNewParent:新的父窗口句柄。如果该参数是NULL,则桌面窗口就成为新的父窗口。
我们可以这样应用:
frmmain中(注:不可为frmmain窗体,为一般窗体,否则会发生冲突)
Option Explicit
Private Declare Function SetParentLib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long)As Long
Private Sub frmmain _click()
SetParent from2.hwnd, frmmain.PictureBox1.hwnd
Form2.Show
End Sub
Form2中
Option Explicit
Private Declare FunctionSetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Form_Activate()
SetForegroundWindow frmmain.hwnd
End Sub
当然这也有不足之处就是有一个闪动的过程.,要完美解决,可能要用子类化从消息里处理。大家还有什么好的办法一起分享一下吧
- 在父窗体的picturebox上显示子窗体 (一)
- 在父窗体的PictureBox上显示子窗体(二)
- 子窗体显示在MDI窗体上
- 子窗体在父窗体指定的控件中显示
- WinForm子窗体嵌入在父窗体的panel上
- C#:Win32 Hooks(一)让下一个弹出子窗体自动显示在父窗体中心
- 机房收费系统(一)MDI子窗体以及在其中应用Picturebox问题
- 在C#中 从一个picturebox中 按住鼠标左键不放 画一块区域后,另外一个picturebox(在一个winform 窗体上有两个picturebox )上马上把对应的截取图像显示出来
- 父窗体和子窗体的显示(vb.net)
- VB.NET 子窗体导出Excel进度显示在父窗体ToolStripProgressBar上
- MDI子窗体标题栏显示在父窗体菜单栏上面
- C# 子窗体在父窗体中显示位置
- VB 子窗体被PictureBox控件挡住无法显示
- 父窗体打开子窗体,子窗体在打开孙子窗体的传值问题
- 【C#】C#实现嵌入式窗体(弹出的子窗体在父窗体内)
- 我的那些子窗体如何在添加了图片框的父窗体中显示?
- 在MDI窗体中将最小化的子窗体放在主窗体的状态栏上
- C#在MDI父窗体菜单中显示子窗体列表的设置方法
- glEnable/glDisable(GL_CULL_FACE)与glCullFace()
- 8051单片机中DPTR的扩展设计
- 下载了Android 2.3的源代码并在Ubuntu 9.10(32位)上编译通过
- acm小组纪律及选拔说明
- 为OpenWrt配置IPV6,享受下一代互联网
- 在父窗体的picturebox上显示子窗体 (一)
- Android接口描述语言。
- Objective-C中数组对象排序的方法(OC中NSString的常用API的基础应用2)
- ios 检查内存泄漏工具--待完善
- 编写高性能JavaScript In JavaScript
- 添加samba用户,并设置密码
- Oracle Merge 语言使用
- 例题6.3.3
- 应用层面的优化