如何让子窗口移出父窗口多少就隐藏多少界面
本帖最后由 xzf680 于 2020-6-7 14:48 编辑点击上移子窗口,当子窗口超出父窗口的部份或整个子窗口如何隐藏,简单的说就是不想看到超出父窗口的子窗口部份界面,子窗口不能在父窗口控件下,移动超出的界面隐藏,没超出的还是看得到这意思。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$GUI = GUICreate("函数演示", 600, 400, -1, -1) ; 创建居中显示的对话框窗口
GUICtrlCreateLabel(@LF & "这个绿色矩形是父窗口上的控件,子窗口不能在父窗口控件底下", 0, 200, 600, 100)
GUICtrlSetBkColor(-1, 0x00ff00)
GUICtrlSetState(-1, $GUI_DISABLE)
$but = GUICtrlCreateButton("上移子窗口", 20, 100, 80,20)
GUISetState()
$form=GUICreate("", 400, 300, 130, 50, $ws_popup, $ws_ex_mdichild, $GUI) ;子窗口
GUISetBkColor(0xffff00)
GUICtrlCreateLabel("点击上移子窗口,当子窗口超出父窗口的部份或整个子窗口如何隐藏,简单的说就不是不想看到超出父窗口的子窗口部份", 40, 100, 320, 50)
GUISetState()
; 运行 GUI,直到对话框窗口关闭
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $but
GUI_MOVE()
EndSwitch
WEnd
Func GUI_MOVE()
Local $pos = WinGetPos($form)
WinMove($form, "", $pos , $pos -20)
EndFunc ;==>GUI_MOVE
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$GUI = GUICreate("函数演示", 600, 400, -1, -1) ; 创建居中显示的对话框窗口
GUICtrlCreateLabel(@LF & "这个绿色矩形是父窗口上的控件", 0, 200, 600, 100)
GUICtrlSetBkColor(-1, 0x00ff00)
GUICtrlSetState(-1, $GUI_DISABLE)
$but = GUICtrlCreateButton("上移子窗口", 20, 100, 80, 20)
GUISetState()
Global $iY = 50
$form = GUICreate("", 400, 300, 130, 50, $WS_CHILD, -1, $GUI) ;子窗口
GUISetBkColor(0xffff00)
GUICtrlCreateLabel("点击上移子窗口,当子窗口超出父窗口的部份或整个子窗口如何隐藏,简单的说就不是不想看到超出父窗口的子窗口部份", 40, 100, 320, 50)
GUISetState()
;~ WM_MOVE()
;~ GUIRegisterMsg($WM_MOVE, "WM_MOVE")
; 运行 GUI,直到对话框窗口关闭
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $but
WM_MOVE()
EndSwitch
WEnd
Func WM_MOVE()
$iY -= 20
WinMove($form, "", Default, $iY)
EndFunc ;==>WM_MOVE
水木子 发表于 2020-6-6 16:56
看他的示例,一定会回复你:子窗口不能被父窗口的控件挡住… {:face (355):} afan 发表于 2020-6-6 18:26
看他的示例,一定会回复你:子窗口不能被父窗口的控件挡住…
前辈英明,我可能真的没有明白他的意图。献丑啦! 水木子 发表于 2020-6-6 18:32
前辈英明,我可能真的没有明白他的意图。献丑啦!
nonono,也可能是我想多了~~他这有点浮动广告的即视感… 辛苦了水木子大神,正如A版说的子窗口不能被父窗口的控件挡住。 本帖最后由 yuantian 于 2020-6-6 19:38 编辑
xzf680 发表于 2020-6-6 19:27
辛苦了水木子大神,正如A版说的子窗口不能被父窗口的控件挡住。
我猜你是这个意思。。。@水木子,@afan
不过很可惜,我不会写。。。
:face (2):
yuantian 发表于 2020-6-6 19:35
我猜你是这个意思。。。@水木子,@afan
不过很可惜,我不会写。。。
是的没错,是这意思:face (37): xzf680 发表于 2020-6-6 19:37
是的没错,是这意思
:face (32):
很可惜啊,这个界面的确很迷,
我的确不知道。。不知道楼上两位大大有没有啥好的思路。。 #NoTrayIcon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
Opt("GUIOnEventMode", 1)
Local $Parent = GUICreate("父窗口", 800, 600, -1, -1) ;父窗口
GUISetOnEvent(-3, '_Exit1')
Local $Child = GUICreate("子窗口", 400, 300, 0, 0) ;子窗口
GUISetOnEvent(-3, '_Exit2')
_WinAPI_SetParent($Child, $Parent)
GUISetState(@SW_SHOW, $Parent)
GUISetState(@SW_SHOW, $Child)
While 1
Sleep(10)
WEnd
Func _Exit1()
Exit
EndFunc ;==>_Exit1
Func _Exit2()
GUISetState(@SW_HIDE, $Child)
_WinAPI_SetParent($Child, 0)
EndFunc ;==>_Exit2 haijie1223 发表于 2020-6-7 00:20
看他的示例,一定会回复你:加上控件试试 {:face (355):} haijie1223 发表于 2020-6-7 00:20
感谢发哥也感谢楼上各位,问题还是没解决,子窗口在父窗口控件下不行,A版理解是对的,期待问题的解决。 注册 WM_GETMINMAXINFO 消息,消息内部处理子窗口坐标大小 afan 发表于 2020-6-7 14:45
注册 WM_GETMINMAXINFO 消息,消息内部处理子窗口坐标大小
期待A大出手,另外_WinAPI_CreateWindowEx这个不知道能否解决,帮助也没看明白,没案例 afan 发表于 2020-6-7 00:23
看他的示例,一定会回复你:加上控件试试
看样子,楼主还不善于自己动脑。
页:
[1]
2