Internes Control - Status setzen

  • Ich hatte ja hier eine Möglichkeit gesucht das Updown im DateTime-Control zu verstecken. Inzwischen habe ich auch eine Möglichkeit gefunden und daraus gleich eine allgemeingültige Funktion erstellt. Vielleicht gibt es ja noch mehr Controls, die ein internes Control beherbergen, dessen Status auf diese Art und Weise beeinflussbar ist. ;-)


    #include <DateTimeConstants.au3>


    GUICreate("Time Control")
    $DTP = GUICtrlCreateDate( "", 5, 10, 70, 21, $DTS_TIMEFORMAT)
    _GuiCtrlSetState_InternalCtrl($DTP)


    GUISetState()


    Do
    Until GUIGetMsg() = -3


    Func _GuiCtrlSetState_InternalCtrl($_hCtrl, $_iState=@SW_HIDE)
    ; == by BugFix
    If Not IsHWnd($_hCtrl) Then $_hCtrl = GUICtrlGetHandle($_hCtrl)
    Local $aResult = DllCall("user32.dll", "hwnd", "GetWindow", "hwnd", $_hCtrl, "uint", 5)
    WinSetState($aResult[0], '', $_iState)
    EndFunc ;==>_GuiCtrlSetState_InternalCtrl

  • Für die 'Magic Number' 5 solltest du vielleicht $GW_CHILD verwenden, damit das ganze leichter verständlich wird.


    Ich wollte nicht noch extra eine Konstante definieren. Nehme ich die Originalkonstante und im Skript wird die WinAPI oder ein anderes Skript, dass die Constants.au3 verwendet bekommst du eine Fehlermeldung (..Previous declared as Const..). OK, man könnte noch einen Unterstrich reinsetzen zur Unterscheidung..
    Aber jede vermeidbare Zuweisung ist eine zu viel. :D