musicstashall
Знающий
- Сообщения
- 322
- Репутация
- 7
Всем доброго.
Заморочился с окнами. Задача следующая: родительское окно имеет три разноцветные зоны — 35 пик под шапкой с черным цветом, средняя часть с белым, нижняя часть с кнопкой в дефолтном цвете (не знаю, что за цвет, важно его оставить). Два дочерних окна: в средней части — контент с элементами управления, в верхней, под шапкой, — как бы адресная строка, аля explorer, на нем планирую поставить ToolBar. Проблема естественно в отрисовке окон — лейбы родительского окна, которыми создается цвет фона, перекрывают все дочерние окна, нужно какое-то решение.
Заморочился с окнами. Задача следующая: родительское окно имеет три разноцветные зоны — 35 пик под шапкой с черным цветом, средняя часть с белым, нижняя часть с кнопкой в дефолтном цвете (не знаю, что за цвет, важно его оставить). Два дочерних окна: в средней части — контент с элементами управления, в верхней, под шапкой, — как бы адресная строка, аля explorer, на нем планирую поставить ToolBar. Проблема естественно в отрисовке окон — лейбы родительского окна, которыми создается цвет фона, перекрывают все дочерние окна, нужно какое-то решение.
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPISysWin.au3>
#include <WinAPIGdi.au3>
Opt("GUIOnEventMode", 1)
$gui1=GUICreate("Название окна", 400, 400, -1, -1, $WS_OVERLAPPEDWINDOW)
GUICtrlCreateLabel("", 0, 0, 400, 35)
GUICtrlSetBkColor(-1, 0)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetResizing(-1, BitOR($GUI_DOCKLEFT, $GUI_DOCKRIGHT, $GUI_DOCKTOP, $GUI_DOCKHEIGHT))
GUISetOnEvent($GUI_EVENT_RESIZED, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
_WinAPI_DwmExtendFrameIntoClientArea($gui1, _WinAPI_CreateMargins(0, 0, 35, 0))
GUICtrlCreateLabel("", 0, 35, 400, 265)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetResizing(-1, BitOR($GUI_DOCKLEFT, $GUI_DOCKRIGHT, $GUI_DOCKTOP, $GUI_DOCKBOTTOM))
GUICtrlCreateButton("OK", 300, 350, 80)
$gui2=GUICreate('', 380, 270, 10, 35, $WS_POPUP);, $WS_EX_MDICHILD)
GUISetBkColor(0x00FF00, $gui2)
GUICtrlCreateCheckbox("Checkbox", 150, 100)
GUICtrlCreateButton("Button", 10, 50)
GUICtrlCreateEdit("Edit", 10, 80, 100, 100)
GUICtrlCreateLabel("Здесь текст", 10, 220)
$gui3=GUICreate('', 300, 22, 80, 5, $WS_POPUP)
GUISetBkColor(0xFFFFFF, $gui3)
GUICtrlCreateCheckbox("Checkbox", 50, 0)
GUICtrlCreateInput('Input', 200, 0)
GUICtrlSetResizing(-1, BitOR($GUI_DOCKRIGHT, $GUI_DOCKWIDTH))
_WinAPI_SetParent($gui2, $gui1)
_WinAPI_SetParent($gui3, $gui1)
GUISetState(@SW_SHOW, $gui1)
GUISetState(@SW_SHOW, $gui2)
GUISetState(@SW_SHOW, $gui3)
GUISwitch($gui2)
While 1
Sleep(100)
WEnd
Func SpecialEvents()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_RESIZED
Local $pos=WinGetPos($gui1)
WinMove($gui2, '',($pos[2]-380)/2, 35)
WinMove($gui3, '', 80, 5, $pos[2]-80 , 22)
EndSwitch
EndFunc