Ich habe eine Haupt-GUI erstellt und mein Script läuft im OnEventMode.
In der GUI habe ich eine Menü-Leiste über die ich ein weiteres Fenster öffnen möchte, wo ich dann vorgebene Einstellungen über Checkboxen vornehmen möchte (Einstell-Optionen). Dieses soll, wenn es geöffnet wird im Vordergrund stehen und getrennt von der Haupt-GUI schließbar sein.
Das Aufrufen des Child-GUI´s ist nicht das Problem, nur komm ich nicht dahinter wie ich es anstelle es in den Vordergrund zu stellen, da ich in der Haupt-GUI schon ein fest eingebettetes Child habe (2. Child liegt bei Aufruf unter dem 1.Child). Beim Anklicken kommt es dann aber in den Vordergrund. Und wie kann ich es realisieren dieses Child getrennt zu schließen?
Edit: Script von unnötigem Inhalt befreit zur besseren Problem-Analyse
Spoiler anzeigen
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <mod_MultiGraph.au3>
#include <Date.au3>
#include <file.au3>
#include <GUIScrollbars_Ex.au3>
#Include <WinAPI.au3>
#include <_GetTaskBarProps.au3>
#include <GuiComboBoxEx.au3>
#include <GuiImageList.au3>
#include <GuiStatusBar.au3>
Opt("GUIOnEventMode", 1)
_GDIPlus_Startup()
$WorkingHeight= _GetworkingAreaHeight()- _GetTaskBarProps("Height")+6
$WorkingWidht= _GetworkingAreaWidth() -14
$hGUI= GUICreate("Diagramm-Tool", $WorkingWidht, $WorkingHeight, 3, 3)
; Menü erzeugen mit allen Unterpunkten
$nFileMenu = GUICtrlCreateMenu("Datei")
$nOpenLogfile = GUICtrlCreateMenuitem("Logfile öffnen", $nFileMenu)
$nExititem = GUICtrlCreateMenuitem("Beenden", $nFileMenu)
$nOptionsMenu = GUICtrlCreateMenu("Optionen")
$nOptionsItem = GUICtrlCreateMenuitem("Einstellungen", $nOptionsMenu)
$nHelpMenu = GUICtrlCreateMenu("?")
$nHelpItem = GUICtrlCreateMenuItem("Hilfe", $nHelpMenu)
$nInfoItem = GUICtrlCreateMenuItem("Info", $nHelpMenu)
Global $plot = 0, _
$iHorzPos, _ ; horizontale Position der Scrollbar
$iVertPos, _ ; vertikale Position der Scrollbar
$iXY_Pos, _ ; Koordinaten der Scrollbar
$iX_Pos, _ ; X-Koordinate der Scrollbar
$iY_Pos, _ ; Y-Koordiante der Scrollbar
$sLogfile = "", _ ; Pfad des Logfiles
$ClientSize = WinGetClientSize($hGUI), _ ; Größe der Client
$hImage, _ ; Inhalt der Imagelist
$aBuffer, _ ; Array für Inhalt des Logfiles
$i, _
$iChannel, _ ; Zähler-Variable für die Farbkanäle
$i_Index, _ ; Zähler-Variable für den Farb-Index
$Graph, _
$GraphSizeX = 5760, _ ; X-Größe des Graphen (Länge)
$GraphSizeY = 2400, _ ; Y-Größe des Graphen (Höhe)
$Colour[16], _ ; Array für die Farben in der Imagelist
$Colour_Channel[9], _ ; Array für die Farbe im Kanal (Graph)
$indexFarbwert[9], _ ; Array für hinterlegten Farbwert zum dem einzelnen Index in Imagelist
$indexAlpha[9], _ ; Array für Alpha-Wert für die jeweilige Farbe
$MittelWert[7], _ ; Arry für Mittelwerte aus den jeweiligen Max- und Min-Werten
$MaxWert[7], _ ; Array für Max-Werte
$MinWert[7] ; Array für Min-Werte
if $ClientSize[1] < 700 Then
$HsizeGraph = $ClientSize[1]-180
Else
$HsizeGraph = 675
EndIf
;~ Child-GUI erstellen
$GUI_Graph = GUICreate("Graph", $ClientSize[0]-25, $HsizeGraph, 10, 10, $WS_Child, Default, $hGUI)
;~ Scrollbar erzeugen
[/autoit] [autoit][/autoit] [autoit]_GUIScrollbars_Generate($GUI_Graph, $GraphSizeX+150, $GraphSizeY+100)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]GUISetState()
GUICtrlSetResizing($GUI_Graph, $GUI_DOCKALL)
; Zur urprünglichen GUI wechseln
GUISwitch($hGUI)
GUICtrlSetResizing($hGUI, $GUI_DOCKALL)
GUISetState(@SW_SHOW)
While 1
GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")
GUICtrlSetOnEvent($nExititem, "_Events")
GUICtrlSetOnEvent($nOptionsItem, "_Options")
WinMove($hGUI,"",3,3)
[/autoit] [autoit][/autoit] [autoit]_ScrollPosition()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Sleep (10)
WEnd
Func _Events() ; hier sind die Events der GUI:
; Fenster Schliessen, Minimieren, Maximieren,
Select
Case @GUI_CtrlId = $GUI_EVENT_CLOSE
Exit
Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
[/autoit] [autoit][/autoit] [autoit]Case @GUI_CtrlId = $GUI_EVENT_RESTORE
[/autoit] [autoit][/autoit] [autoit]Case $nExititem
Exit
EndSelect
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; Ermitteln der Scrollbar-Position im Client und der Koordinaten
Func _ScrollPosition()
$iHorzPos= -(_GUIScrollBars_GetScrollInfoTrackPos($hGUI, $SB_HORZ))
$iVertPos= -(_GUIScrollBars_GetScrollInfoTrackPos($hGUI, $SB_VERT))
$iXY_Pos = _GUIScrollbars_Locate_Ctrl ($GUI_Graph, $iHorzPos,$iVertPos)
$iX_Pos = -($iXY_Pos[0]-$iHorzPos)
$iY_Pos = -($iXY_Pos[1]-$iVertPos)
EndFunc
Local $Rect[4]
Func _GetworkingAreaWidth()
Local $aRect[4]
Local $iWidth = 0
$aRect = _GetworkingAreaRect()
If Not @error Then
$iWidth = $aRect[2] - $aRect[0]
Return $iWidth
Else
Return SetError(1,0,0)
EndIf
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func _GetworkingAreaHeight()
Local $aRect[4]
Local $iWidth = 0
$aRect = _GetworkingAreaRect()
If Not @error Then
$iWidth = $aRect[3] - $aRect[1]
Return $iWidth
Else
Return SetError(1,0,0)
EndIf
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func _GetworkingAreaRect()
Local $aRect[4]
Const $SPI_GETWORKAREA = 0x0030
Local $rect = DllStructCreate("int;int;int;int")
Local $iResult = 0
$iResult = _WinAPI_SystemParametersInfo($SPI_GETWORKAREA, 0 , DllStructGetPtr($rect))
If $iResult Then
$aRect[0] = DllStructGetData($rect,1)
$aRect[1] = DllStructGetData($rect,2)
$aRect[2] = DllStructGetData($rect,3)
$aRect[3] = DllStructGetData($rect,4)
Return $aRect
Else
Return SetError(1,0,0)
EndIf
EndFunc
[/autoit] [autoit][/autoit] [autoit];~ ; Options
Func _Options()
$Options = GUICreate("Optionen", 400, 500, (@DesktopWidth/2)-100, (@DesktopHeight/2)-250, BitOR($WS_CHILD, $WS_TABSTOP, $WS_SIZEBOX), $WS_EX_CONTROLPARENT, $hGUI)
GUISwitch($Options)
GUICtrlCreateLabel("Auflösung", 10, 20, 50, 20, BitOR($SS_CENTERIMAGE, $ES_CENTER))
$Abbruch = GUICtrlCreateButton("Abbruch", 10, 40, 50, 20)
GUISetState(@SW_SHOW)
EndFunc
[/autoit]