zjimmy 发表于 2010-4-25 17:11:30

[未解决]GUICreate 过的窗口,可以重新指定父窗口么?

本帖最后由 zjimmy 于 2010-4-25 22:01 编辑

窗口在 GUICreate 的时候可以指定父窗口。
那么,一旦 GUICreate 过以后,能否重新指定一个新的父窗口?

_WinAPI_SetParent

_WinAPI_SetParent 的实际效果貌似和直接 GUICreate 指定父窗口的效果不一样,请见以下两种代码,第一个是直接 GUICreate 的,第二个是 _WinAPI_SetParent 的:#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$GUI_Parent = GUICreate("GUI Parent", 400, 300, -1, -1)
GUISetState(@SW_SHOW)

$GUI_Child = GUICreate("GUI Child", 200, 150, 0, 0, -1, -1, $GUI_Parent)
GUISetState(@SW_SHOW)

Do
        $msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE

Exit#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#include <WinAPI.au3>

$GUI_Parent = GUICreate("GUI Parent", 400, 300, -1, -1)
GUISetState(@SW_SHOW)

$GUI_Child = GUICreate("GUI Child", 200, 150, 0, 0, -1, -1);, $GUI_Parent)
_WinAPI_SetParent($GUI_Child, $GUI_Parent)
GUISetState(@SW_SHOW)

Do
        $msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE

Exit

298311657 发表于 2010-4-25 17:26:52

_WinAPI_SetParent($Child_GUI, $GUI)

298311657 发表于 2010-4-25 17:27:10

_WinAPI_SetParent($Child_GUI, $GUI)

zjimmy 发表于 2010-4-25 17:58:58

貌似 API 很强大?
Thank you very much~

zjimmy 发表于 2010-4-25 22:07:26

回复 2# 298311657


    _WinAPI_SetParent 的实际效果貌似和直接 GUICreate 指定父窗口的效果不一样

3mile 发表于 2010-4-26 09:51:26

貌似区别在这里(UDF帮助原文):使用 SetParent函数设置弹出式窗口, 层叠窗口, 或子窗口.
我的理解是当使用 SetParent函数设置的子窗口具有(弹出式窗口, 层叠窗口, 或子窗口)的样式.
不一定正确,请甄别使用。

zjimmy 发表于 2010-4-27 10:16:54

比如我一开始给出的例子,本来就是弹出式窗口,SetParent以后,反而“嵌套”在父窗口里面了。。。
难道就没有办法解决么?
页: [1]
查看完整版本: [未解决]GUICreate 过的窗口,可以重新指定父窗口么?