kk_lee69 发表于 2016-5-8 16:30:42

如何让子窗口不被父窗口的控件覆盖住??

如何让子窗口不被父窗口的控件覆盖住??

如下 程序

建立了一个 有颜色的子窗口
希望不要看到 ﹝能看到我吗??﹞那个按钮

希望子窗口 永远在哪个按钮的上面
能做得到吗???
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <ListviewConstants.au3>
#Include <Constants.au3>
#include <WindowsConstants.au3>
#Include <WinAPIEx.au3>

$main_GUI = GUICreate("Tab Sample", 400, 320, -1, -1,$WS_MAXIMIZEBOX+ $WS_MINIMIZEBOX+ $WS_SIZEBOX+$WS_CLIPCHILDREN);, BitOr($GUI_SS_DEFAULT_GUI,$WS_CLIPSIBLINGS))

$button4 = GUICtrlCreateButton("可以看到我嗎??", 150, 100, 120, 20)
$button1 = GUICtrlCreateButton("顯示", 10, 270, 70, 20)
$button2 = GUICtrlCreateButton("隱藏", 100, 270, 70, 20)

GUISetState()

$child1= GUICreate("child1",370, 215, 15, 40,BitOr($WS_CHILD,$WS_CLIPSIBLINGS) ,-1, $main_GUI);
GUISetBkColor(0x257788); just for dimensing the child
_WinAPI_SetWindowPos($child1, -1, 0, 0, 0, 0, 3)
GUISetState()

While 1
   
    Switch GUIGetMsg()
      Case $GUI_EVENT_CLOSE
            Exit
      Case $button1
                        GUISetState(@SW_SHOW, $child1)
                       
      Case $button2
                        GUISetState(@SW_HIDE, $child1)
                       

                       
    EndSwitch


WEnd

chzj589 发表于 2016-5-8 18:37:50

回复 1# kk_lee69

可以遮住,改一下子窗口的.....

chzj589 发表于 2016-5-9 12:09:49

回复 1# kk_lee69
不是这种效果?



kk_lee69 发表于 2016-5-9 13:27:16

是 但是 不可用 $WS_EX_MDICHILD風格因為$WS_EX_MDICHILD 並沒有真的內嵌到 父窗口會被其他的程序 擋住

kk_lee69 发表于 2016-5-9 13:50:34

回复 3# chzj589

你說的是 下面的寫法
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <ListviewConstants.au3>
#Include <Constants.au3>
#include <WindowsConstants.au3>
#Include <WinAPI.au3>

$main_GUI = GUICreate("Tab Sample", 800, 600, -1, -1,$WS_MAXIMIZEBOX+ $WS_MINIMIZEBOX+ $WS_SIZEBOX+$WS_CLIPCHILDREN);, BitOr($GUI_SS_DEFAULT_GUI,$WS_CLIPSIBLINGS))

$button4 = GUICtrlCreateButton("可以看到我嗎??", 150, 100, 120, 20)
$button1 = GUICtrlCreateButton("顯示", 10, 270, 70, 20)
$button2 = GUICtrlCreateButton("隱藏", 100, 270, 70, 20)

GUISetState()

$child1=GUICreate("child1",500, 500, 15, 40,0x80000000, 0x00000040 + 0x00000010, $main_GUI);
GUISetBkColor(0x257788); just for dimensing the child
_WinAPI_SetWindowPos($child1, -1, 0, 0, 0, 0, 3)
GUISetState()

While 1
   
    Switch GUIGetMsg()
      Case $GUI_EVENT_CLOSE
            Exit
      Case $button1
                        GUISetState(@SW_SHOW, $child1)
                        
      Case $button2
                        GUISetState(@SW_HIDE, $child1)
                        

                        
    EndSwitch


WEnd

但是 你看 下面的圖片是會被其他東西 把 綠色 跟 主表單 分開的


chzj589 发表于 2016-5-9 14:18:52

回复 5# kk_lee69

不会啊

kk_lee69 发表于 2016-5-9 14:21:09

因為小吧你可以用我的第二個語法測試嗎

chzj589 发表于 2016-5-9 14:33:37

回复 7# kk_lee69

再试试看,子窗口是800*600

kk_lee69 发表于 2016-5-9 14:39:08

回复 8# chzj589

正常~~ 莫非WINDOWS 簡繁的問題??能把 程式碼直接給我我編譯看看嗎??

chzj589 发表于 2016-5-9 14:46:59

回复 9# kk_lee69

5楼的代码,把18行的:

_WinAPI_SetWindowPos($child1, -1, 0, 0, 0, 0, 3)
删掉

子窗口不能与主窗口放大与缩小,这个没办法解决。

kk_lee69 发表于 2016-5-9 14:49:51

恩 果然是那個原因

heroxianf 发表于 2016-5-9 15:24:33

回复 11# kk_lee69


    前段时间我也在了解这个问题,可以用TAB 页面来解决。
页: [1]
查看完整版本: 如何让子窗口不被父窗口的控件覆盖住??