【已解决】关于窗口层次的设置
本帖最后由 anythinging 于 2020-2-18 17:09 编辑正在努力学习窗口层次中,遇到一个问题,恳请各位大神指点,谢谢!求指点$ form1始终在最下层,不遮挡$ form2,$ form3的方法,谢谢!
#include <ButtonConstants.au3>
#include < GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WINAPI.au3>
#include <WinAPISysWin.au3>
$ Form1 = GUICreate(“ Form1”,1800,1000,-1,-1,$ WS_POPUP)
GUICtrlCreatePic(' back01.jpg',-1,-1,1800,1000)
$ Label1 = GUICtrlCreateLabel(“ Label1” ,160,200,132,33)$
Button1 = GUICtrlCreateButton(“ Button1”,
24,16,65,33 )GUISetBkColor (0x444444)
$ Form2 = GUICreate(“ Form2”,600,80,-1,-1,$ WS_POPUP,$ WS_EX_TOPMOST)
$ Button3 = GUICtrlCreateButton(“ 333”,24,16,65,33)
GUISetBkColor(0xABCDEF)
GUISetState(@SW_SHOW)
$ Form3 = GUICreate(“ Form3”,300,200,300,-1,$ WS_POPUP,$ WS_EX_LAYERED)
GUISetBkColor(0x363636)
_WinAPI_SetLayeredWindowAttributes($ Form3,0x363636)
$ Button5 = GUICtrlCreateButton(“ 555”,24,16,65 , 33)
GUISetState(@SW_SHOW)
While 1
$ nMsg = GUIGetMsg()
开关$ nMsg
情况$ GUI_EVENT_CLOSE
退出
EndSwitch
WEnd
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WINAPI.au3>
;#include <WinAPISysWin.au3>
Global $iWidtha = @DesktopWidth
Global $iHeighta = @DesktopHeight
$Form1 = GUICreate("Form1", $iWidtha - 48, $iHeighta - 130, -1, -1, $WS_POPUP)
GUICtrlCreatePic('back01.jpg', -1, -1, 1800, 1000)
$Label1 = GUICtrlCreateLabel("Label1", 160, 200, 132, 33)
GUICtrlSetFont(-1, 24, 600, 0, 'Arial');"微软雅黑")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetBkColor(-1, -2)
GUICtrlSetCursor(-1, 0)
$Button1 = GUICtrlCreateButton("退出", 24, 16, 65, 33)
;GUISetBkColor(0x444444)
$Form2 = GUICreate("Form2", 900, 80, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
$Button3 = GUICtrlCreateButton("333", 24, 16, 65, 33)
GUISetBkColor(0xABCDEF)
$Form3 = GUICreate("Form3", 300, 80, 492, 124, $WS_POPUP, $WS_EX_TOPMOST);,$WS_EX_LAYERED)
GUISetBkColor(0xA1BFAA - 0x440000);GUISetBkColor(0x363636)
_WinAPI_SetLayeredWindowAttributes($Form3, 0x363636)
$Button5 = GUICtrlCreateButton("555", 24, 16, 65, 33)
GUISetState(@SW_SHOW, $Form1)
GUISetState(@SW_SHOW, $Form2)
GUISetState(@SW_SHOW, $Form3)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Button1
Exit
EndSwitch
WEnd
chzj589 发表于 2020-2-18 09:38
#include
#include
感谢回复!您这个是将form3设置成置顶了,我想实现form3不是像form2那样置顶(即可以被其它窗口遮挡),form1始终在最底层,类似在桌面,即最底层。
查了资料好象要用到_WinAPI_SetParent($Form1, $hParent),但没效果。 本帖最后由 anythinging 于 2020-2-18 09:58 编辑
感觉需要对Form1进行操作,将其设置为最底层或者是桌面。我想实现
form1最底层,(相当于背景)
form2始终是最上层,
form3是透明,普通窗口(相当于中间层)
尝试使用
$hParent = WinGetHandle('')
_WinAPI_SetParent($Form1, $hParent)
即form1设置为桌面的子窗口,未能成功。
anythinging 发表于 2020-2-18 09:53
感觉需要对Form1进行操作,将其设置为最底层或者是桌面。我想实现
form1最底层,(相当于背景)
form2始 ...
是这个意思?
搞定了,3层目前基本掌握。底层,中层,顶层 chzj589 发表于 2020-2-18 10:23
是这个意思?
是的,底form1,中form2,顶form3 这个是正确的,搞定。 本帖最后由 anythinging 于 2020-2-18 10:36 编辑
这个是正确的。3层窗口层次。底,中,顶,还有一个问题,就是如果增加form4,即底form1,
顶,form2
中上,form3
中下,form4
的话,是否就是简单的调整form3,form4的顺序?
又有了一个疑问,是否可以用_WinAPI_SetParent($Form4, $Form3)来实现?测试中
#include <GUIConstantsEx.au3>
#include <WinAPISysWin.au3>
#include <WindowsConstants.au3>
Local $hParent = WinGetHandle('')
Local $Form1 = GUICreate('form1', @DesktopWidth,@DesktopHeight, 0, 0,$WS_POPUP);,$WS_POPUP
_WinAPI_SetParent($Form1, $hParent)
GUICtrlCreatePic('back01.jpg',0,0,@DesktopWidth,@DesktopHeight)
GUISetState(@SW_SHOWNOACTIVATE)
$Form2 = GUICreate("Form2", 900, 80, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
$Button3 = GUICtrlCreateButton("333", 24, 16, 65, 33)
GUISetBkColor(0xABCDEF)
$Form3 = GUICreate("Form3", 300, 200, 300, -1,$WS_POPUP,$WS_EX_LAYERED)
GUISetBkColor(0x363636)
_WinAPI_SetLayeredWindowAttributes($Form3, 0x363636)
$Button5 = GUICtrlCreateButton("555", 24, 16, 65, 33)
GUISetState(@SW_SHOW, $Form2)
GUISetState(@SW_SHOW, $Form3)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
anythinging 发表于 2020-2-18 10:32
这个是正确的。3层窗口层次。底,中,顶,还有一个问题,就是如果增加form4,即底form1,
顶,form2
中上, ...
我的图片
页:
[1]