閱讀307 返回首頁    go 技術社區[雲棲]


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

  上一篇:go [算法係列之三十三]楊氏矩陣
  下一篇:go eclipse啟動失敗的是java vm失敗解決方法