madmasles
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Прозрачное окно : Код: #Include <WindowsConstants.au3> #Include <WinAPIEx.au3> $hMain = GUICreate("", 800, 600, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetBkColor(0xFF0011) $hOk = GUICtrlCreateButton("OK", 365, 560, 70, 23) $hLabel = GUICtrlCreateLabel("Какая-то надпись.", 10, 100, 500, 100) GUICtrlSetColor($hLabel, 0xFF0000) GUICtrlSetFont($hLabel, 32, 800, -1, "Tahoma") GUISetState(@SW_SHOW, $hMain) _WinAPI_SetLayeredWindowAttributes($hMain, 0xFF0011, 0, $LWA_COLORKEY) While 1 If GUIGetMsg() = $hOk Then Exit WEnd | Дополнительная секция: Код: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <GUIImageList.au3> ; Global $hImageList, $sOld_Opt_GRM = Opt("GUIResizeMode", $GUI_DOCKALL) Global $iGUI_Height = 150 $Form1 = GUICreate("Form1", 550, $iGUI_Height, 192, 124) $Button1 = GUICtrlCreateButton("Опции >>", 440, 112, 105, 25, $WS_GROUP) _GUICtrlButton_SetImageEx($hImageList, $Button1, @SystemDir & "\rasdlg.dll", 14) #Region Expanded controls GUICtrlCreateButton("Some Button", 20, 240, 80) GUICtrlCreateButton("Other Button", 120, 240, 80) GUICtrlCreateInput("Some Input", 20, 200, 200, 20) Opt("GUIResizeMode", $sOld_Opt_GRM) #EndRegion Expanded controls ; GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $Button1 _Toggle_ExpandControls_Proc($Form1, $iGUI_Height, $iGUI_Height+150, $Button1, "Опции >>", "Опции <<") Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _Toggle_ExpandControls_Proc($hWnd,$iInitWndHeight,$iExpndHeight,$iExpndCtrlID,$sExpndText="Expand",$sCntrctText="Contract") Local $iHeight, $sButtonText, $aSysCaptMetrics, $aSysBordMetrics Local Const $SM_CYCAPTION = 4 ;Caption (Title) heigth Local Const $SM_CXFIXEDFRAME = 7 ;Window border size $aSysCaptMetrics = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', $SM_CYCAPTION) $aSysBordMetrics = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', $SM_CXFIXEDFRAME) $aGuiPos = WinGetPos($hWnd) If $aGuiPos[3] > $iExpndHeight + $aSysCaptMetrics[0] Then _GUICtrlButton_SetImageEx($hImageList, $iExpndCtrlID, @SystemDir & "\rasdlg.dll", 14) $iHeight = $iInitWndHeight + $aSysCaptMetrics[0] + ($aSysBordMetrics[0] * 2) $sButtonText = $sExpndText Else _GUICtrlButton_SetImageEx($hImageList, $iExpndCtrlID, @SystemDir & "\rasdlg.dll", 16) $iHeight = $iExpndHeight + $aSysCaptMetrics[0] + ($aSysBordMetrics[0] * 2) $sButtonText = $sCntrctText EndIf GUICtrlSetData($iExpndCtrlID, $sButtonText) WinMove($hWnd, "", $aGuiPos[0], $aGuiPos[1], $aGuiPos[2], $iHeight) EndFunc Func _GUICtrlButton_SetImageEx(ByRef $hImageList, $nCtrl, $sIconFile, $nIconID=0, $nAlign=-1) If $hImageList Then _GUIImageList_Destroy($hImageList) $hImageList = _GUIImageList_Create(16, 16, 5, 1) _GUIImageList_AddIcon($hImageList, $sIconFile, $nIconID) Local $stBIL = DllStructCreate("dword;int[4];uint") DllStructSetData($stBIL, 1, $hImageList) DllStructSetData($stBIL, 2, 1, 1) DllStructSetData($stBIL, 2, 1, 2) DllStructSetData($stBIL, 2, 1, 3) DllStructSetData($stBIL, 2, 1, 4) DllStructSetData($stBIL, 3, $nAlign) Return GUICtrlSendMsg($nCtrl, $BCM_SETIMAGELIST, 0, DllStructGetPtr($stBIL)) EndFunc | Изменение размеров окна: Код: #include <GuiConstants.au3> $GUI = GUICreate("Resize GUI", 300, 200) $ResizeGUI_Button = GUICtrlCreateButton("Resize", 20, 40, 70, 20) GUICtrlSetResizing(-1, $GUI_DOCKALL) GUISetState(@SW_SHOW, $GUI) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $ResizeGUI_Button Local $aGUI_Pos = WinGetPos($GUI) ;Увеличиваем размер GUI на 5 единиц с каждой стороны (в высоту и в ширену) WinMove($GUI, "", $aGUI_Pos[0], $aGUI_Pos[1], $aGUI_Pos[2] + 5, $aGUI_Pos[3] + 5) EndSwitch WEnd |
|