anythinging 发表于 2019-12-8 21:16:26

【已解决】关于gui子窗口座标

本帖最后由 anythinging 于 2020-2-18 17:10 编辑

各位大神,在练习做一个桌面的小日历,开始日历控件总是被背景图片遮挡,反复测试后可算是实现不被背景图遮挡了,又有了个新问题,日历窗口gui的x,y值不生效,始终在屏幕左上角,求指点,谢谢!

$WinMain = GUICreate("WinMain", 1280, 800, -1, -1,$WS_POPUP)
$Wallpaper = GUICtrlCreatePic('c:\windows\back01.jpg', 0,0, 1280, 800)
GUICtrlSetState($Wallpaper,$GUI_DISABLE)
$text1 = GUICtrlCreateLabel('桌面日历',500,30,200,50)
GUICtrlSetFont(-1, 24, 800,0,"微软雅黑")
$ButtonA1 = GUICtrlCreateButton('退出', 500, 700, 100, 35)

_WinAPI_SetWindowLong($WinMain, $GWL_HWNDPARENT, WinGetHandle("Program Manager"));此语句实现窗口不被最小化

GUISetState(@SW_SHOW, $WinMain)

;$WinMainSubRL = GUICreate("日历控件",220,160,1060,20,$WS_POPUP,$WS_EX_MDICHILD,$WinMain);不被背景图片遮挡

$WinMainSubRL = GUICreate("日历控件",220,160,1060,20,$WS_CHILD,$WS_EX_LAYERED,$WinMain);不被背景图片遮挡


Global $hCalendarText = GUICtrlCreateLabel(@YEAR&@mon,12,10,280,25)
GUICtrlSetFont(-1, 14, 400,0,"微软雅黑")
GUICtrlSetColor(-1,0xFEFEFE)
GUICtrlSetBkColor(-1,-2)

GUISetState()

anythinging 发表于 2019-12-8 21:21:17

日历的窗口始终在左上解红框位置

anythinging 发表于 2019-12-8 21:26:43

如果用$WinMainSubRL = GUICreate("日历控件",220,160,1060,20,$WS_POPUP,$WS_EX_MDICHILD,$WinMain);不被背景图片遮挡,能实现不被背景图片遮挡了,xy值也生效了,但无法实现透明

chzj589 发表于 2019-12-9 08:31:22

anythinging 发表于 2019-12-8 21:26
如果用$WinMainSubRL = GUICreate("日历控件",220,160,1060,20,$WS_POPUP,$WS_EX_MDICHILD,$WinMain);不被 ...

是这个意思?{:1_561:}



anythinging 发表于 2019-12-9 08:34:51

chzj589 发表于 2019-12-9 08:31
是这个意思?

是的,就是这个意思.

chzj589 发表于 2019-12-9 08:41:18

anythinging 发表于 2019-12-9 08:34
是的,就是这个意思.

用一个窗口就可以

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $iWidtha = 1280;@DesktopWidth
Global $iHeighta = 750;@DesktopHeight
#Region ### START Koda GUI section ### Form=
$WinMain = GUICreate("Form1", $iWidtha, $iHeighta, -1, -1, BitOR($WS_SYSMENU, $WS_BORDER, $WS_POPUP, $DS_MODALFRAME))
$Wallpaper = GUICtrlCreatePic(@ScriptDir & "/back0.jpg", 0,0, $iWidtha, $iHeighta);$iWidtha - 68, $iHeighta - 100)
GUICtrlSetState($Wallpaper,$GUI_DISABLE)
Global $hCalendarText = GUICtrlCreateLabel(@YEAR&@mon,$iWidtha-100,10,90,25)
GUICtrlSetFont(-1, 14, 400,0,"微软雅黑")
GUICtrlSetColor(-1,0xFEFEFE)
GUICtrlSetBkColor(-1,-2)
$text1 = GUICtrlCreateLabel('桌面日历',$iWidtha/2-70,30,140,50)
GUICtrlSetFont(-1, 24, 800,0,"微软雅黑")
GUICtrlSetColor(-1,0xFF9933);0x990000)
GUICtrlSetBkColor(-1,-2)
$ButtonA1 = GUICtrlCreateButton('退出', $iWidtha/2-50, 700, 100, 35)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE, $ButtonA1
                        Exit

        EndSwitch
WEnd

anythinging 发表于 2019-12-9 08:46:33

chzj589 发表于 2019-12-9 08:41
用一个窗口就可以

#include


谢谢!用一个窗口是没问题的,想请教如果是2个gui或多个gui窗口的时候,如何处理?

chzj589 发表于 2019-12-9 10:18:59

anythinging 发表于 2019-12-9 08:46
谢谢!用一个窗口是没问题的,想请教如果是2个gui或多个gui窗口的时候,如何处理?

查看帮助
GUISetState([标志[, 句柄]])


anythinging 发表于 2019-12-9 12:36:38

以后要逐步增加些东西,如果放在一个窗口里的话,很多坐标参数都需要修改。

chzj589 发表于 2019-12-9 13:22:58

本帖最后由 chzj589 于 2019-12-9 14:11 编辑

anythinging 发表于 2019-12-9 12:36
以后要逐步增加些东西,如果放在一个窗口里的话,很多坐标参数都需要修改。
三年多了,LZ可能没时间学习,这应该是基础的东西。例子:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $iWidtha = 1280;@DesktopWidth
Global $iHeighta = 750;@DesktopHeight
Global $WinMain, $WinMain1, $ButtonA1
_WinMain()
Func _WinMain()
      GUISetState(@SW_HIDE, $WinMain1)
      #Region ### START Koda GUI section ### Form=
      $WinMain = GUICreate("Form1", $iWidtha, $iHeighta, -1, -1, BitOR($WS_SYSMENU, $WS_BORDER, $WS_POPUP, $DS_MODALFRAME))
      $Wallpaper = GUICtrlCreatePic(@ScriptDir & "/back0.jpg", 0, 0, $iWidtha, $iHeighta);$iWidtha - 68, $iHeighta - 100)
      GUICtrlSetState($Wallpaper, $GUI_DISABLE)
      Global $hCalendarText = GUICtrlCreateLabel(@YEAR & @MON, $iWidtha - 100, 10, 90, 25)
      GUICtrlSetFont(-1, 14, 400, 0, "微软雅黑")
      GUICtrlSetColor(-1, 0xFEFEFE)
      GUICtrlSetBkColor(-1, -2)
      $text1 = GUICtrlCreateLabel('桌面日历', $iWidtha / 2 - 70, 30, 140, 50)
      GUICtrlSetFont(-1, 24, 800, 0, "微软雅黑")
      GUICtrlSetColor(-1, 0xFF9933);0x990000)
      GUICtrlSetBkColor(-1, -2)
      $ButtonA1 = GUICtrlCreateButton('退出', $iWidtha / 2 - 50, 700, 100, 35)
      $Button1 = GUICtrlCreateButton('下一个窗口', $iWidtha - 350, 700, 100, 35)
      GUISetState(@SW_SHOW, $WinMain)
      #EndRegion ### END Koda GUI section ###

      While 1
                $nMsg = GUIGetMsg()
                Switch $nMsg
                        Case $GUI_EVENT_CLOSE, $ButtonA1
                              Exit
                        Case $Button1
                              _Button()
                EndSwitch
      WEnd
EndFunc   ;==>_WinMain
Func _Button()
      GUISetState(@SW_HIDE, $WinMain)
      #Region ### START Koda GUI section ### Form=
      $WinMain1 = GUICreate("Form1", $iWidtha, $iHeighta, -1, -1, BitOR($WS_SYSMENU, $WS_BORDER, $WS_POPUP, $DS_MODALFRAME))
      $Wallpaper = GUICtrlCreatePic(@ScriptDir & "/back0.jpg", 0, 0, $iWidtha, $iHeighta);$iWidtha - 68, $iHeighta - 100)
      GUICtrlSetState($Wallpaper, $GUI_DISABLE)
      Global $hCalendarText = GUICtrlCreateLabel(@YEAR & @MON, $iWidtha - 100, 10, 90, 25)
      GUICtrlSetFont(-1, 14, 400, 0, "微软雅黑")
      GUICtrlSetColor(-1, 0xFEFEFE)
      GUICtrlSetBkColor(-1, -2)
      $text1 = GUICtrlCreateLabel('桌面日历2', $iWidtha / 2 - 77, 30, 155, 50)
      GUICtrlSetFont(-1, 24, 800, 0, "微软雅黑")
      GUICtrlSetColor(-1, 0xFF9933);0x990000)
      GUICtrlSetBkColor(-1, -2)
      $Button1 = GUICtrlCreateButton('返回', $iWidtha - 350, 700, 100, 35)

      GUISetState(@SW_SHOW, $WinMain1)
      #EndRegion ### END Koda GUI section ###

      While 1
                $nMsg = GUIGetMsg()
                Switch $nMsg
                        Case $GUI_EVENT_CLOSE, $ButtonA1
                              Exit
                        Case $Button1
                              _WinMain()
                EndSwitch
      WEnd
EndFunc   ;==>_Button



anythinging 发表于 2019-12-9 16:15:40

感谢解答,实在是惭愧,水平有限啊,其实我只想要左边的效果,右边的位置#NoTrayIcon
#include <Process.au3>
#include <WinAPIProc.au3>
#include <ftpex.au3>
#Include <WinAPI.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <winapi.au3>



$WinMain = GUICreate("WinMain", @DesktopWidth, @DesktopHeight, -1, -1,$WS_POPUP)
$Wallpaper = GUICtrlCreatePic('c:\windows\back02.jpg', 0,0,@DesktopWidth, @DesktopHeight)
GUICtrlSetState($Wallpaper,$GUI_DISABLE)

$text1 = GUICtrlCreateLabel('桌面日历',400,30,200,50)
GUICtrlSetFont(-1, 24, 800,0,"微软雅黑")

$ButtonA1 = GUICtrlCreateButton('退出', 500, 700, 100, 35)

_WinAPI_SetWindowLong($WinMain, $GWL_HWNDPARENT, WinGetHandle("Program Manager"));此语句实现窗口不被最小化

GUISetState(@SW_SHOW, $WinMain)




Global $aWeekName = ["日","一","二","三","四","五","六"]
Global $aDayName
Global $hFocusText

;$WinMainSubRL = GUICreate("日历控件",220,160,@DesktopWidth-220,30,$WS_POPUP,$WS_EX_MDICHILD,$WinMain);不被背景图片遮挡
$WinMainSubRL = GUICreate("日历控件",220,160,@DesktopWidth-220,10,$WS_CHILD,$WS_EX_LAYERED,$WinMain);不被背景图片遮挡


Global $hCalendarText = GUICtrlCreateLabel(GetDate(),12,20,280,25)
GUICtrlSetFont(-1, 14, 400,0,"微软雅黑")
GUICtrlSetColor(-1,0xFEFEFE)
GUICtrlSetBkColor(-1,-2)

For $i = 0 To 6
      GUICtrlCreateLabel($aWeekName[$i],0+$i*30,35,42,22,$SS_CENTER)
      ;GUICtrlSetFont(-1, 16, 800)
                GUICtrlSetFont(-1, 12, 600, 0, "微软雅黑")
      ;GUICtrlSetColor(-1,0xFEFEFE);周一-周日颜色
                GUICtrlSetColor(-1,0x4682B4);周一-周日颜色
      GUICtrlSetBkColor(-1,-2)
Next

Local $k=1
For $i = 1 To 6
      For $j =0 To 6
                $aDayName[$k-1] = GUICtrlCreateLabel("",0+$j*30,35+$i*20,42,22,$SS_CENTER)
                ;GUICtrlSetFont(-1, 16, 800)
                                GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
                GUICtrlSetColor(-1,0xFEFEFE)
                GUICtrlSetBkColor(-1,-2)
                $k+=1
      Next
Next
SetCalendar(@YEAR, @MON)

GUISetState()



While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                        Case $GUI_EVENT_CLOSE, $ButtonA1
                                Exit
        EndSwitch
           Sleep(100)
WEnd


Func SetCalendar($iYear, $iMonth)
      If $iYear < 999 Or $iYear > 9998 Or $iMonth < 1 And $iMonth > 12 Then Return False
      Local $k=1, $l = 0, $iWeekday = _DateToDayOfWeek($iYear, $iMonth, 1)
      Local $iDays = _DateDaysInMonth($iYear, $iMonth)
      For $i = 1 To 6
                For $j =0 To 6
                        If $k >= $iWeekday And $l < $iDays Then
                              $l+=1
                              GUICtrlSetData($aDayName[$k-1],$l)
                        Else
                              GUICtrlSetData($aDayName[$k-1],"")
                        EndIf
                        If @YEAR = $iYear And @MDAY = $l And @MON = $iMonth Then
                              GUICtrlSetColor($aDayName[$k-1],0x4682B4);当天的颜色0xFFA0A0
                        Else
                              GUICtrlSetColor($aDayName[$k-1], 0xFEFEFE);每天的颜色
                        EndIf
                        $k+=1
                Next
      Next
      Return True
EndFunc

Func GetDate()
      Return (@YEAR & "   年" & @MON & "月" & @MDAY & "日")
EndFunc





chzj589 发表于 2019-12-9 17:22:24

anythinging 发表于 2019-12-9 16:15
感谢解答,实在是惭愧,水平有限啊,其实我只想要左边的效果,右边的位置

#NoTrayIcon
#include <Process.au3>
#include <WinAPIProc.au3>
#include <ftpex.au3>
#include <WinAPI.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <winapi.au3>
$WinMain = GUICreate("WinMain", @DesktopWidth, @DesktopHeight, -1, -1, $WS_POPUP)
$Wallpaper = GUICtrlCreatePic(@ScriptDir & "/back0.jpg", 0, 0, @DesktopWidth, @DesktopHeight)
GUICtrlSetState($Wallpaper, $GUI_DISABLE)
$text1 = GUICtrlCreateLabel('桌面日历', @DesktopWidth/2-70, 30, 150, 50)
GUICtrlSetFont(-1, 24, 800, 0, "微软雅黑")
GUICtrlSetBkColor(-1, -2)
$ButtonA1 = GUICtrlCreateButton('退出', @DesktopWidth/2-50, 700, 100, 35)
_WinAPI_SetWindowLong($WinMain, $GWL_HWNDPARENT, WinGetHandle("Program Manager"));此语句实现窗口不被最小化
GUISetState(@SW_SHOW, $WinMain)
Global $aWeekName = ["日", "一", "二", "三", "四", "五", "六"]
Global $aDayName
Global $hFocusText
;$WinMainSubRL = GUICreate("日历控件",220,160,@DesktopWidth-220,30,$WS_POPUP,$WS_EX_MDICHILD,$WinMain);不被背景图片遮挡
$WinMainSubRL = GUICreate("日历控件", 220, 160, @DesktopWidth - 220, 10, $WS_CHILD, $WS_EX_LAYERED, $WinMain);不被背景图片遮挡
Global $hCalendarText = GUICtrlCreateLabel(GetDate(), @DesktopWidth - 230, 30, 240, 25)
GUICtrlSetFont(-1, 14, 400, 0, "微软雅黑")
GUICtrlSetColor(-1, 0xFEFEFE)
GUICtrlSetBkColor(-1, -2)
For $i = 0 To 6
        GUICtrlCreateLabel($aWeekName[$i], @DesktopWidth - 235 + $i * 30, 60, 25, 22, $SS_CENTER)
        ;GUICtrlSetFont(-1, 16, 800)
        GUICtrlSetFont(-1, 12, 600, 0, "微软雅黑")
        ;GUICtrlSetColor(-1,0xFEFEFE);周一-周日颜色
        GUICtrlSetColor(-1, 0x990000);0x4682B4);周一-周日颜色
        GUICtrlSetBkColor(-1, -2)
Next
Local $k = 1
For $i = 1 To 6
        For $j = 0 To 6
                $aDayName[$k - 1] = GUICtrlCreateLabel("", @DesktopWidth - 235 + $j * 30, 60 + $i * 20, 25, 22, $SS_CENTER)
                ;GUICtrlSetFont(-1, 16, 800)
                GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
                GUICtrlSetColor(-1, 0xFEFEFE)
                GUICtrlSetBkColor(-1, -2)
                $k += 1
        Next
Next
SetCalendar(@YEAR, @MON)
GUISetState()
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE, $ButtonA1
                        Exit
        EndSwitch
        Sleep(100)
WEnd
Func SetCalendar($iYear, $iMonth)
        If $iYear < 999 Or $iYear > 9998 Or $iMonth < 1 And $iMonth > 12 Then Return False
        Local $k = 1, $l = 0, $iWeekday = _DateToDayOfWeek($iYear, $iMonth, 1)
        Local $iDays = _DateDaysInMonth($iYear, $iMonth)
        For $i = 1 To 6
                For $j = 0 To 6
                        If $k >= $iWeekday And $l < $iDays Then
                                $l += 1
                                GUICtrlSetData($aDayName[$k - 1], $l)
                        Else
                                GUICtrlSetData($aDayName[$k - 1], "")
                        EndIf
                        If @YEAR = $iYear And @MDAY = $l And @MON = $iMonth Then
                                GUICtrlSetColor($aDayName[$k - 1], 0xfbfcfd);0x4682B4);当天的颜色0xFFA0A0
                                GUICtrlSetBkColor($aDayName[$k - 1], 0x990000)
                        Else
                                GUICtrlSetColor($aDayName[$k - 1], 0xfbfcfd);0xFEFEFE);每天的颜色
                        EndIf
                        $k += 1
                Next
        Next
        Return True
EndFunc   ;==>SetCalendar
Func GetDate()
        Return (@YEAR & "   年" & @MON & "月" & @MDAY & "日")
EndFunc   ;==>GetDate



chzj589 发表于 2019-12-9 17:54:53

本帖最后由 chzj589 于 2019-12-9 18:29 编辑

anythinging 发表于 2019-12-9 16:15
感谢解答,实在是惭愧,水平有限啊,其实我只想要左边的效果,右边的位置
没注意看,第二个窗口是多余的。
$WinMainSubRL = GUICreate("日历控件", 220, 160, @DesktopWidth - 220, 10, $WS_CHILD, $WS_EX_LAYERED, $WinMain);不被背景图片遮挡第二个窗口要用的话应该是这样子

#NoTrayIcon
#include <Process.au3>
#include <WinAPIProc.au3>
#include <ftpex.au3>
#include <WinAPI.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$WinMain = GUICreate("WinMain", @DesktopWidth, @DesktopHeight, -1, -1, $WS_POPUP)
GUISetBkColor(0xA0E0E0)
$WinMainSubRL = GUICreate("A視窗", @DesktopWidth - 20, @DesktopHeight - 60, 10, 30, $WS_CHILD, $WS_EX_CLIENTEDGE, $WinMain)
GUISetBkColor(0xA0E0E0)
$Wallpaper = GUICtrlCreatePic(@ScriptDir & "/back0.jpg", 0, 0, @DesktopWidth, @DesktopHeight)
GUICtrlSetState($Wallpaper, $GUI_DISABLE)
$text1 = GUICtrlCreateLabel('桌面日历', @DesktopWidth / 2 - 70, 30, 150, 50)
GUICtrlSetFont(-1, 24, 800, 0, "微软雅黑")
GUICtrlSetBkColor(-1, -2)
$ButtonA1 = GUICtrlCreateButton('退出', @DesktopWidth / 2 - 50, 700, 100, 35)
;_WinAPI_SetWindowLong($WinMain, $GWL_HWNDPARENT, WinGetHandle("Program Manager"));此语句实现窗口不被最小化
Global $aWeekName = ["日", "一", "二", "三", "四", "五", "六"]
Global $aDayName
Global $hFocusText
Global $hCalendarText = GUICtrlCreateLabel(GetDate(), @DesktopWidth - 230, 30, 240, 25)
GUICtrlSetFont(-1, 14, 400, 0, "微软雅黑")
GUICtrlSetColor(-1, 0xFEFEFE)
GUICtrlSetBkColor(-1, -2)
For $i = 0 To 6
        GUICtrlCreateLabel($aWeekName[$i], @DesktopWidth - 235 + $i * 30, 60, 25, 22, $SS_CENTER)
        ;GUICtrlSetFont(-1, 16, 800)
        GUICtrlSetFont(-1, 12, 600, 0, "微软雅黑")
        ;GUICtrlSetColor(-1,0xFEFEFE);周一-周日颜色
        GUICtrlSetColor(-1, 0x990000);0x4682B4);周一-周日颜色
        GUICtrlSetBkColor(-1, -2)
Next
Local $k = 1
For $i = 1 To 6
        For $j = 0 To 6
                $aDayName[$k - 1] = GUICtrlCreateLabel("", @DesktopWidth - 235 + $j * 30, 60 + $i * 20, 25, 22, $SS_CENTER)
                ;GUICtrlSetFont(-1, 16, 800)
                GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
                GUICtrlSetColor(-1, 0xFEFEFE)
                GUICtrlSetBkColor(-1, -2)
                $k += 1
        Next
Next
SetCalendar(@YEAR, @MON)
;GUISetState()
GUISetState(@SW_SHOW, $WinMainSubRL)
GUISetState(@SW_SHOW, $WinMain)
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE, $ButtonA1
                        GUIDelete()
                        Exit
        EndSwitch
        ;Sleep(100)
WEnd
Func SetCalendar($iYear, $iMonth)
        If $iYear < 999 Or $iYear > 9998 Or $iMonth < 1 And $iMonth > 12 Then Return False
        Local $k = 1, $l = 0, $iWeekday = _DateToDayOfWeek($iYear, $iMonth, 1)
        Local $iDays = _DateDaysInMonth($iYear, $iMonth)
        For $i = 1 To 6
                For $j = 0 To 6
                        If $k >= $iWeekday And $l < $iDays Then
                                $l += 1
                                GUICtrlSetData($aDayName[$k - 1], $l)
                        Else
                                GUICtrlSetData($aDayName[$k - 1], "")
                        EndIf
                        If @YEAR = $iYear And @MDAY = $l And @MON = $iMonth Then
                                GUICtrlSetColor($aDayName[$k - 1], 0xfbfcfd);0x4682B4);当天的颜色0xFFA0A0
                                GUICtrlSetBkColor($aDayName[$k - 1], 0x990000)
                        Else
                                GUICtrlSetColor($aDayName[$k - 1], 0xfbfcfd);0xFEFEFE);每天的颜色
                        EndIf
                        $k += 1
                Next
        Next
        Return True
EndFunc   ;==>SetCalendar
Func GetDate()
        Return (@YEAR & "   年" & @MON & "月" & @MDAY & "日")
EndFunc   ;==>GetDate



anythinging 发表于 2019-12-9 21:09:45

chzj589 发表于 2019-12-9 17:22
#NoTrayIcon
#include
#include


非常感谢指点,看了您的2个代码,我看懂了日历代码的座标是相对于$WinMain的,而我之前设置的日历座标都是属于$WinMainSubRL的,请问这样设置有问题吗?

我最初的想法是如果日历座标属于$WinMainSubRL,那么在以后的代码中可以隐藏或关闭$WinMainSubRL,就可以将日历这一块隐藏不显示了。

chzj589 发表于 2019-12-9 22:00:46

本帖最后由 chzj589 于 2019-12-9 22:23 编辑

anythinging 发表于 2019-12-9 21:09
非常感谢指点,看了您的2个代码,我看懂了日历代码的座标是相对于$WinMain的,而我之前设置的日历座标都 ...
你没注意看,第二个代码就是属于$WinMainSubRL窗口
如果要增加窗口代码,只要添加$WinMainSubRL窗口就行在GUISetState(@SW_SHOW, $WinMain)后面加上
$WinMainSubRL1 = GUICreate("", @DesktopWidth - 23, @DesktopHeight - 63, 10, 30, $WS_CHILD, $WS_EX_CLIENTEDGE, $WinMain)
;GUISetBkColor(0xA0E0E0)
$Wallpaper = GUICtrlCreatePic(@ScriptDir & "/back0.jpg", 0, 0, @DesktopWidth, @DesktopHeight)
GUICtrlSetState($Wallpaper, $GUI_DISABLE)
$text1 = GUICtrlCreateLabel('桌面日历', @DesktopWidth / 2 - 70, 30, 150, 50)
GUICtrlSetFont(-1, 24, 800, 0, "微软雅黑")
GUICtrlSetBkColor(-1, -2)

$Button2 = GUICtrlCreateButton('返回', @DesktopWidth - 350, 700, 100, 35)
GUISetState(@SW_HIDE, $WinMainSubRL1)
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE, $ButtonA1
                        GUIDelete()
                        Exit
                Case $Button1
                        GUISetState(@SW_HIDE, $WinMainSubRL)
                        WinActivate($WinMain)
                        GUISetState(@SW_SHOW, $WinMainSubRL1)
                Case $Button2
                        GUISetState(@SW_HIDE, $WinMainSubRL1)
                        WinActivate($WinMain)
                        GUISetState(@SW_SHOW, $WinMainSubRL)
        EndSwitch
WEnd

页: [1] 2
查看完整版本: 【已解决】关于gui子窗口座标