307
技術社區[雲棲]
VB 子窗體被PictureBox控件擋住無法顯示
1、問題描述
VB做機房收費係統的時候,用的MDI主窗體,在主窗體上加了一個Picturebox控件,運行的時候,點了子窗體,但是卻沒有出現,後來才發現,子窗體被Picturebox控件給當在了後麵。
2、問題原因
在MDI程序中,子窗體實際位於MDIClient裏,就是說,子窗體的父窗體是MDIClient,而PictureBox和MDIClient屬於同一級的
層次結構
ThunderMDIForm-MDIForm1
--MDIClient
---ThunderFormDC-Form1 子窗體1
---ThunderFormDC-Form2 子窗體2
--ThunderPictureBoxDC MDI的PictureBox
3、解決辦法
用到的函數——SetParent函數
Private Declare FunctionSetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParentAs Long) As Long
函數功能:
該函數改變某個子窗口的父窗口。
參數:
hWndChild:子窗口句柄。hWndNewParent:新的父窗口句柄。如果該參數是NULL,則桌麵窗口就成為新的父窗口。
返回值:
如果函數成功,返回值為子窗口的原父窗口句柄;如果函數失敗,返回值為NULL。
代碼如下:
Private Sub AboutMenu_Click()
SetParent frmAbout.hWnd, frmMain.hWnd
frmAbout.Show
End Sub
需要注意的一點是,frmMain窗體不可以是MDI窗體,要用一般的Form窗體,否則的話,當你運行的時候,它會提醒你——“實時錯誤426”,隻允許一個MDI窗體。
最後更新:2017-04-03 14:54:32