找回密码
 加入
搜索
查看: 5644|回复: 22

[GUI管理] 如何让子窗口移出父窗口多少就隐藏多少界面

[复制链接]
发表于 2020-6-6 14:55:37 | 显示全部楼层 |阅读模式
本帖最后由 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[0] , $pos[1] -20)
EndFunc   ;==>GUI_MOVE

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2020-6-6 16:56:21 | 显示全部楼层
#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 18:26:45 | 显示全部楼层

看他的示例,一定会回复你:子窗口不能被父窗口的控件挡住…
发表于 2020-6-6 18:32:54 | 显示全部楼层
afan 发表于 2020-6-6 18:26
看他的示例,一定会回复你:子窗口不能被父窗口的控件挡住…

前辈英明,我可能真的没有明白他的意图。献丑啦!

点评

水木子大大, 我给他截了个图,估计能够更明显的表达意思。。同求思路。  发表于 2020-6-6 19:40
发表于 2020-6-6 18:38:05 | 显示全部楼层
水木子 发表于 2020-6-6 18:32
前辈英明,我可能真的没有明白他的意图。献丑啦!

nonono,也可能是我想多了~~  他这有点浮动广告的即视感…

点评

A版, 我给他截了个图,估计能够更明显的表达意思。。同求思路。。。  发表于 2020-6-6 19:41
 楼主| 发表于 2020-6-6 19:27:22 | 显示全部楼层
辛苦了水木子大神,正如A版说的子窗口不能被父窗口的控件挡住。
发表于 2020-6-6 19:35:39 | 显示全部楼层
本帖最后由 yuantian 于 2020-6-6 19:38 编辑
xzf680 发表于 2020-6-6 19:27
辛苦了水木子大神,正如A版说的子窗口不能被父窗口的控件挡住。

我猜你是这个意思。。。@水木子,@afan
不过很可惜,我不会写。。。















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2020-6-6 19:37:36 | 显示全部楼层
yuantian 发表于 2020-6-6 19:35
我猜你是这个意思。。。@水木子,@afan
不过很可惜,我不会写。。。

是的没错,是这意思
发表于 2020-6-6 19:39:33 | 显示全部楼层
xzf680 发表于 2020-6-6 19:37
是的没错,是这意思


很可惜啊,这个界面的确很迷,
我的确不知道。。不知道楼上两位大大有没有啥好的思路。。
发表于 2020-6-7 00:20:37 | 显示全部楼层
#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
发表于 2020-6-7 00:23:28 | 显示全部楼层

看他的示例,一定会回复你:加上控件试试
 楼主| 发表于 2020-6-7 14:42:29 | 显示全部楼层

感谢发哥也感谢楼上各位,问题还是没解决,子窗口在父窗口控件下不行,A版理解是对的,期待问题的解决。
发表于 2020-6-7 14:45:55 | 显示全部楼层
注册 WM_GETMINMAXINFO 消息,消息内部处理子窗口坐标大小
 楼主| 发表于 2020-6-7 15:25:02 | 显示全部楼层
afan 发表于 2020-6-7 14:45
注册 WM_GETMINMAXINFO 消息,消息内部处理子窗口坐标大小

期待A大出手,另外_WinAPI_CreateWindowEx这个不知道能否解决,帮助也没看明白,没案例
发表于 2020-6-7 15:33:58 | 显示全部楼层
afan 发表于 2020-6-7 00:23
看他的示例,一定会回复你:加上控件试试

看样子,楼主还不善于自己动脑。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-19 01:03 , Processed in 0.088308 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表