找回密码
 加入
搜索
查看: 5768|回复: 9

[系统综合] 在数个子窗口中如何知道,ABC三个子窗 哪个在最上层???[已解决]

  [复制链接]
发表于 2015-3-17 14:01:02 | 显示全部楼层 |阅读模式
本帖最后由 kk_lee69 于 2015-3-18 00:21 编辑

在父子窗口下,有 ABC 三个子窗,请问如何知道 哪个子窗 目前为最上层呢??
#include <GuiConstants.au3>
#include <WindowsConstants.au3>
#include <winapi.au3>
 
 
Opt("GUIOnEventMode", 1)
 
;Global Const $SC_CLOSE = 0xF060
Local $ChildForm[1] = [0], $ChildBtn[1] = [0]
 
$WinMain = GUICreate("Main", 1000,750,-1,-1,  $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX + $WS_SIZEBOX)
 
 
GUISetOnEvent($GUI_EVENT_CLOSE,"GUI_COMMAND")
 
GUISetState(@SW_SHOW, $WinMain)
 
 
 
 
$WinMainSub=GUICreate("A視窗", 300,300, 200, 200, BitOR($WS_CHILD, $WS_CAPTION),-1, $WinMain)
_WinAPI_SetParent($WinMainSub, $WinMain)
GUISetState(@SW_SHOW, $WinMainSub)
 
 
$WinMainSub2=GUICreate("B視窗", 300,300,300, 300,BitOR($WS_CHILD, $WS_CAPTION),-1, $WinMain)
_WinAPI_SetParent($WinMainSub2,$WinMain)
GUISetState(@SW_SHOW, $WinMainSub2)
 
$WinMainSub3=GUICreate("C視窗", 300,300,400,  400,BitOR($WS_CHILD, $WS_CAPTION),-1, $WinMain)
_WinAPI_SetParent($WinMainSub2,$WinMain)
GUISetState(@SW_SHOW, $WinMainSub3)
 
GUISetOnEvent($GUI_EVENT_CLOSE,"GUI_COMMAND")
 
 
While 1
        Sleep(20)
WEnd
 
 
 
 
Func GUI_COMMAND()
    Switch @GUI_CtrlId
                
         Case $GUI_EVENT_CLOSE
            Switch @GUI_WINHANDLE
                Case $WinMain
                    Exit
                                        
                                        
                Case Else
                    GUIDelete(@GUI_WINHANDLE)
            EndSwitch
 
 
                
                        
    EndSwitch
EndFunc
发表于 2015-3-17 14:12:16 | 显示全部楼层
GetWindow(hWnd,GW_HWNDPREV)
返回为NULL则为最上层
发表于 2015-3-17 16:34:37 | 显示全部楼层
获取当前的活动窗体不就完了
发表于 2015-3-17 19:07:26 | 显示全部楼层
回复 3# netegg
他要的是子窗口,获取活动窗口的话得到的可能是父窗口
 楼主| 发表于 2015-3-17 23:10:43 | 显示全部楼层
回复 2# ceoguang

老大 再幫幫忙吧!!
我知道您說要用 _WinAPI_GetWindow 這個函數 但是 查了說明  上面沒範例
老實說 實在不知道該如何應用!!

可以舉簡單的例子 說明一下嗎??
发表于 2015-3-17 23:22:49 | 显示全部楼层
回复 5# kk_lee69
Local $aHwnd[3] = [$WinMainSub, $WinMainSub2, $WinMainSub3]
For $i = 0 To 2
        If _WinAPI_GetWindow($aHwnd[$i], 3) = 0 Then
                MsgBox(0, '', $aHwnd[$i] & ' 为顶层子窗口')
        EndIf
Next
 楼主| 发表于 2015-3-18 00:21:04 | 显示全部楼层
回复 6# ceoguang

懂了 了解 ~~會用了 感謝!!^^
发表于 2015-3-24 18:26:40 | 显示全部楼层
#Include <WinAPIEx.au3>
_WinAPI_GetTopWindow
发表于 2015-4-12 11:01:40 | 显示全部楼层
感谢楼主的分享,谢谢
发表于 2018-3-3 09:35:10 | 显示全部楼层
感谢楼主的分享,谢谢。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 04:30 , Processed in 0.132808 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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