日期:2014-05-16  浏览次数:20359 次

MDI子窗体如何显示在picture控件的前面

    在敲机房收费系统的时候遇到了一点小麻烦,就是在MDI主窗体上添加容器控件picture后,导致MDI子窗体无法显示。其实不是无法显示,只是被picture控件挡住了,不明其所以然。

    通过查资料终于明白了其中的原因:在MDI窗体中,子窗体实际上位于MDIClient里,即子窗体的父窗体就是MDIClient,而防止在MDI中的picture控件和MDIClient是同一级别的,由于层次结构,所以无法使子窗体显示在picture控件的上面。

     如果想要实现这个功能,只能破坏Form的消息循环,可以使用如下函数:Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

该函数功能:该函数改变某个子窗口的父窗口。

返回值:如果函数成功,返回值为子窗口的原父窗口句柄;如果函数失败,返回值为NULL。

在事件中添加如下代码就可以了:

SetParent Form1.hWnd, MDIForm1.hWnd