Skip to content

Instantly share code, notes, and snippets.

@AHK-just-me
Last active December 15, 2015 21:19
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AHK-just-me/5325353 to your computer and use it in GitHub Desktop.
Save AHK-just-me/5325353 to your computer and use it in GitHub Desktop.
GuiControlAddBox (DE)
#NoEnv
SetBatchLines, -1
Gui, New
Gui, Margin, 20, 20
; Textfeld mit den Dimensionen der "GroupBox" erstellen
Gui, Add, Text, w400 h200 vGB hwndHGB BackGroundTrans Section
; Position holen, um den Titel später zentrieren zu können
GuiControlGet, GB, Pos
; "GroupBox" Rahmen im Textfeld erstellen
HBOX := GuiControlAddBox(HGB, "Green")
; Titel der "GroupBox" zentriert setzen
Gui, Add, Text, xs ys cGreen Center 0x200 vGBTI, % " Titel "
GuiControlGet, GBTI, Pos
X := GBX + ((GBW - GBTIW) // 2)
Y := GBTIY - (GBTIH // 2)
GuiControl, Move, GBTI, x%X% y%Y%
; Und ab dafür!
Gui, Add, StatusBar, , % " Grüner Rahmen"
Gui, Show, , Falsche GroupBox
Sleep, 2000
; "GroupBox" Rahmen entfernen
GuiControlRemoveBox(HBOX)
SB_SetText(" Kein Rahmen")
Sleep, 2000
; Neuen "GroupBox" Rahmen hinzufügen
GuiControlAddBox(HGB, "Red")
SB_SetText(" Roter Rahmen")
Return
GuiClose:
ExitApp
; ======================================================================================================================
; GuiControlAddBox(HCTL[, BC[, BW]]) - "GroupBox" Rahmen in einem Textfeld setzen
; Parameter:
; HCTL - HWND des Textfeldes (Option hwndHCTL)
; BC - Farbe des Rahmens als 6-stelliger RGB Hex-Wert oder HTML-Farbname (Standard: Schwarz)
; BW - Stärke des Rahmens in Pixeln (Standard: 1)
; Rückgabewerte:
; Im Erfolgsfall - HWND des Rahmenfensters (wird benötigt, wenn der Rahmen später entfernt werden soll)
; Im Fehlerfall - 0
; ======================================================================================================================
GuiControlAddBox(HCTL, BC := "000000", BW := 1) {
Static Counter := 0
VarSetCapacity(RECT, 16, 0)
If !DllCall("User32.dll\GetClientRect", "Ptr", HCTL, "Ptr", &RECT, "UInt")
|| !(HGUI := DllCall("User32.dll\GetParent", "Ptr", HCTL, "UPtr"))
Return False
DllCall("User32.dll\LockWindowUpdate", "Ptr", HGUI)
GuiName := "GuiControlAddBoxGui" . (++Counter)
W := NumGet(RECT, 8, "Int")
H := NumGet(RECT, 12, "Int")
X2 := W - BW
Y2 := H - BW
Gui, %GuiName%: -Caption +Disabled +parent%HCTL% +hwndHBOX
Gui, %GuiName%: Margin, 0, 0
Gui, %GuiName%: Color, %BC%
WinSet, Region, 0-0 %W%-0 %W%-%H% 0-%H% 0-0 %BW%-%BW% %X2%-%BW% %X2%-%Y2% %BW%-%Y2% %BW%-%BW%, ahk_id %HBOX%
Gui, %GuiName%: Show, x0 y0 w%W% h%H%
DllCall("User32.dll\LockWindowUpdate", "Ptr", 0)
Return HBOX
}
; ======================================================================================================================
; GuiControlRemoveBox(HBOX) - "GroupBox" Rahmen entfernen
; Parameter:
; HBOX - HWND des Textfeldes (wie von GuiControlAddBox() zurückgegeben)
; Rückgabewerte:
; Im Erfolgsfall - 1
; Im Fehlerfall - 0
; ======================================================================================================================
GuiControlRemoveBox(HBOX) {
If !(HGUI := DllCall("User32.dll\GetAncestor", "Ptr", HBOX, "UInt", 2, "UPtr"))
Return False
DllCall("User32.dll\LockWindowUpdate", "Ptr", HGUI)
DllCall("User32.dll\DestroyWindow", "Ptr", HBOX)
DllCall("User32.dll\LockWindowUpdate", "Ptr", 0)
Return True
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment