AutoIt: 3.3.8.1
Версия: 4.5
Категория: Элементы GUI
Описание:
Первоначально задумывалось создание ф-ии _ControlSetResizing - аналога нативной ф-ии: GUICtrlSetResizing
для возможности задания характера поведения элементов GUI,созданных с помощью UDF , при изменении размеров окна GUI[/s].
В дальнейшем UDF дополнилась функцией _ControlResizing для изменения размеров элементов GUI с помощью Resize-линий
и несколькими сервисными функциями.
Возможности UDF:
* - задание характера поведения элементов GUI, созданных с помощью UDF , при изменении размеров окна GUI. (Ф-ия: _ControlSetResizing).
Примечание : По умолчанию задействован автоконтроль размеров элементов.
* - изменение размеров элементов GUI с помощью Resize-линий. (Ф-ия : _ControlResizing).
* - управление несколькими окнами.
Примечание : в случае создания дополнительных окон в процессе работы скрипта потребуется ф-ия : _InitGUI).
* - ограничения пределов изменения окон (Ф-ия : _SetGUI_MinSize).
* - использование автоограничения пределов изменения окон. (Опция : $i_Opt_Autodetect_MinSize=1 ).
Примечание : По умолчанию опция включена.Для отключения использовать установку : $i_Opt_Autodetect_MinSize=0.
продемонстрированы в демонстрационном примере Demo1:
Скриншот Demo 1:
Demo 1:
При создании UDF основное внимание было уделено упрощению ее использования в скрипте.
Использование UDF в различных ситуациях показано на примерах :
Пример 1: Использование параметра по умолчанию($GUI_DOCKAUTO)
Пример 2. Использование ф- ии : _ControlSetResizing($hCtrl, $iResParameters)
Пример 3. Использование опции: Opt("GUIResizeMode", ...)
Пример 4. Использование ф- ии : _ControlResizing
Пример 5. Использование ф- ии : _SetGUI_MinSize
Пример 6. Использование в скрипте ф- ии : _Register_WM_SIZE("Script_WM_SIZE")
Пример 7. Использование ф- ии _InitGUI : в многооконном скрипте
В архив также заложен тестовый пример на адекватность поведения элементов (Native & UDF).
Файл: RSZ v4.5.rar
История версий:
Источник: autoit-script.ru
Автор: gregaz
Версия: 4.5
Категория: Элементы GUI
Описание:
Первоначально задумывалось создание ф-ии _ControlSetResizing - аналога нативной ф-ии: GUICtrlSetResizing
для возможности задания характера поведения элементов GUI,созданных с помощью UDF , при изменении размеров окна GUI[/s].
В дальнейшем UDF дополнилась функцией _ControlResizing для изменения размеров элементов GUI с помощью Resize-линий
и несколькими сервисными функциями.
Возможности UDF:
* - задание характера поведения элементов GUI, созданных с помощью UDF , при изменении размеров окна GUI. (Ф-ия: _ControlSetResizing).
Примечание : По умолчанию задействован автоконтроль размеров элементов.
* - изменение размеров элементов GUI с помощью Resize-линий. (Ф-ия : _ControlResizing).
* - управление несколькими окнами.
Примечание : в случае создания дополнительных окон в процессе работы скрипта потребуется ф-ия : _InitGUI).
* - ограничения пределов изменения окон (Ф-ия : _SetGUI_MinSize).
* - использование автоограничения пределов изменения окон. (Опция : $i_Opt_Autodetect_MinSize=1 ).
Примечание : По умолчанию опция включена.Для отключения использовать установку : $i_Opt_Autodetect_MinSize=0.
продемонстрированы в демонстрационном примере Demo1:
Скриншот Demo 1:
Demo 1:
Код:
#Include <WindowsConstants.au3>
#Include <GuiConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <GuiEdit.au3>
#include <GuiTreeView.au3>
#include <GuiTab.au3>
#include <GuiToolbar.au3>
#include <GuiListView.au3>
#include <GuiListBox.au3>
#include <GuiStatusBar.au3>
#include "RSZ.au3"
Global $a_Parts[3] = [175, 720, -1]
Global $a_Text[3] = ["Левое выравнивание", @TAB & "Центр", @TAB & @TAB & "Правое выравнивание"]
Global Enum $idNew = 1000, $idOpen, $idSave, $idHelp
$h_Form = GUICreate("Demo 1", 1210, 655, -1, -1, $WS_OVERLAPPEDWINDOW)
$h_Toolbar=_GUICtrlToolbar_Create($h_Form, 0x00000800 , $WS_EX_CLIENTEDGE)
_GUICtrlToolbar_AddBitmap ($h_Toolbar, 1, -1, $IDB_STD_LARGE_COLOR)
_GUICtrlToolbar_AddButton ($h_Toolbar, $idNew, $STD_FILENEW)
_GUICtrlToolbar_AddButton ($h_Toolbar, $idOpen, $STD_FILEOPEN)
_GUICtrlToolbar_AddButton ($h_Toolbar, $idSave, $STD_FILESAVE)
_GUICtrlToolbar_AddButtonSep ($h_Toolbar)
_GUICtrlToolbar_AddButton ($h_Toolbar, $idHelp, $STD_HELP)
$h_TV1=_GUICtrlTreeView_Create($h_Form, 5, 40, 230, 290, $TVS_CHECKBOXES, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKLeft+$GUI_DOCKWIDTH+$GUI_DOCKTop+$GUI_DOCKBOTTOM); ===> RSZ.au3
_GUICtrlTreeView_SetBkColor($h_TV1, 0xCECEC2)
_GUICtrlTreeView_Add($h_TV1, 0, "_TV (UDF)")
GUICtrlCreateTreeView(5, 340, 230, 290, $TVS_CHECKBOXES, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKLeft+$GUI_DOCKSIZE+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor ( -1, 0xAECAE0 )
_GUICtrlTreeView_Add(-1, 0, "TV (Native)")
$h_Tab = _GUICtrlTab_Create($h_Form, 245, 40, 642, 592)
_ControlSetResizing(-1, $GUI_DOCKLeft+$GUI_DOCKRIGHT+$GUI_DOCKTop+$GUI_DOCKBOTTOM); ===> RSZ.au3
_GUICtrlTab_InsertItem($h_Tab, 0, "Вкладка 1")
_GUICtrlTab_InsertItem($h_Tab, 1, "Вкладка 2")
$h_Rich=_GUICtrlRichEdit_Create($h_Form, '_RichEdit', 247, 62, 637, 270, -1, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKLeft+$GUI_DOCKRIGHT+$GUI_DOCKTop+$GUI_DOCKBOTTOM); ===> RSZ.au3
_GUICtrlRichEdit_SetBkColor($h_Rich, 0xC2CECE)
_GUICtrlEdit_Create($h_Form, '_Edit (UDF)', 247, 340, 637, 200, -1, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKLeft+$GUI_DOCKRIGHT+$GUI_DOCKHeighT+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlCreateEdit('Edit (Native)', 247, 550, 637, 77, -1, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKLeft+$GUI_DOCKRIGHT+$GUI_DOCKHeighT+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor ( -1, 0xAECAE0 )
GUICtrlCreateListView("Колонка1|кол2|кол3 ", 895, 40, 310, 185, -1,$LVS_EX_GRIDLINES )
_ControlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKWIDTH+$GUI_DOCKTop+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor ( -1, 0xAECAE0 )
_GUICtrlListView_AddItem(-1, "LV (Native)", 0)
$h_ListView = _GUICtrlListView_Create($h_Form, "Колонка1|кол2|кол3 ", 895, 235, 310, 95)
_ControlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKSIZE+$GUI_DOCKBOTTOM)
_GUICtrlListView_SetExtendedListViewStyle($h_ListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES )); ===> RSZ.au3
_GUICtrlListView_SetBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_SetTextBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_AddItem($h_ListView, "_LV (UDF)", 0)
GUICtrlCreateList("List (Native)", 895, 340, 150, 295, $GUI_SS_DEFAULT_LIST)
_ControlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKSIZE+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor ( -1, 0xAECAE0 )
_GUICtrlListBox_Create($h_Form, "ListBox (UDF)", 1055, 340, 150, 295)
_ControlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKSIZE+$GUI_DOCKBOTTOM)
_GUICtrlStatusBar_Create ($h_Form, $a_Parts, $a_Text)
$_ResLab_V1=GUICtrlCreateLabel("", 238, 40, 4, 592)
_ControlSetResizing(-1, $GUI_DOCKLeft+$GUI_DOCKWIDTH+$GUI_DOCKTop+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor(-1, 0xCE00C0)
GUICtrlSetCursor(-1, 13)
$_ResLab_V2=GUICtrlCreateLabel("", 888, 40, 4, 592)
_ControlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKWIDTH+$GUI_DOCKTop+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor(-1, 0xCE00C0)
GUICtrlSetCursor(-1, 13)
$_ResLab_V3=GUICtrlCreateLabel("", 1047, 340, 4, 292)
_ControlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKSIZE+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor(-1, 0xCE00C0)
GUICtrlSetCursor(-1, 13)
$_ResLab_H1 = GUICtrlCreateLabel("", 5, 333, 230, 4)
GUICtrlSetBkColor(-1, 0x0000C0)
GUICtrlSetCursor(-1, 11)
_ControlSetResizing(-1, $GUI_DOCKSIZE+$GUI_DOCKLeft+$GUI_DOCKBOTTOM); ===> RSZ.au3
$_ResLab_H2 = GUICtrlCreateLabel("", 895, 227, 310, 4)
GUICtrlSetBkColor(-1, 0x0000C0)
GUICtrlSetCursor(-1, 11)
_ControlSetResizing(-1, $GUI_DOCKSIZE+$GUI_DOCKRIGHT+$GUI_DOCKBOTTOM); ===> RSZ.au3
$_ResLab_H3 = GUICtrlCreateLabel("", 895, 333, 310, 4)
GUICtrlSetBkColor(-1, 0x0000C0)
GUICtrlSetCursor(-1, 11)
_ControlSetResizing(-1, $GUI_DOCKSIZE+$GUI_DOCKRIGHT+$GUI_DOCKBOTTOM); ===> RSZ.au3
$_ResLab_H4 = GUICtrlCreateLabel("", 245, 333, 638, 4)
GUICtrlSetBkColor(-1, 0x0000C0)
GUICtrlSetCursor(-1, 11)
_ControlSetResizing(-1, $GUI_DOCKLeft+$GUI_DOCKHeighT+$GUI_DOCKRIGHT+$GUI_DOCKBOTTOM); ===> RSZ.au3
$_ResLab_H5 = GUICtrlCreateLabel("", 245, 543, 638, 4)
GUICtrlSetBkColor(-1, 0x0000C0)
GUICtrlSetCursor(-1, 11)
_ControlSetResizing(-1, $GUI_DOCKLeft+$GUI_DOCKHeighT+$GUI_DOCKRIGHT+$GUI_DOCKBOTTOM); ===> RSZ.au3
_Register_WM_SIZE("Script_WM_SIZE"); ===> RSZ.au3
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
Case $_ResLab_V1 To $_ResLab_H5
_ControlResizing($nMsg); ===> RSZ.au3
EndSwitch
WEnd
Func Script_WM_SIZE($hWnd, $nMsg, $wParam, $lParam)
$aGUIPos=WinGetPos ($hWnd)
Local $sText= _
"Width = " & $aGUIPos[2] & _
" Height = " & $aGUIPos[3]
WinSetTitle($hWnd, '', $sText)
Return $GUI_RUNDEFMSG
EndFunc
При создании UDF основное внимание было уделено упрощению ее использования в скрипте.
Использование UDF в различных ситуациях показано на примерах :
Пример 1: Использование параметра по умолчанию($GUI_DOCKAUTO)
Код:
;Примечание : Для изменения элементов только при изменении размеров окна GUI достаточно установление стиля окна($WS_SIZEBOX,$WS_OVERLAPPEDWINDOW и т.п.),
; допускающего изменение размеров окна.Использования ф-й UDF не требуется.
#Include <WindowsConstants.au3>
#Include <GuiConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <GuiEdit.au3>
#include <GuiTreeView.au3>
#include <GuiListView.au3>
#include <GuiListBox.au3>
#include "RSZ.au3"
$h_Form = GUICreate("Example 1(Работа скрипта с параметрами по умолчанию)", 1010, 625, -1, -1, $WS_OVERLAPPEDWINDOW)
$h_TV1=_GUICtrlTreeView_Create($h_Form, 5, 5, 235, 290, $TVS_CHECKBOXES, $WS_EX_CLIENTEDGE)
_GUICtrlTreeView_SetBkColor($h_TV1, 0xCECEC2)
_GUICtrlTreeView_Add($h_TV1, 0, "TV (UDF)")
GUICtrlCreateTreeView(5, 300, 235, 320, $TVS_CHECKBOXES, $WS_EX_CLIENTEDGE)
GUICtrlSetBkColor ( -1, 0xAECAE0 )
_GUICtrlTreeView_Add(-1, 0, "TV (Native)")
$h_Rich=_GUICtrlRichEdit_Create($h_Form, 'RichEdit', 247, 5, 434, 332, -1, $WS_EX_CLIENTEDGE)
_GUICtrlRichEdit_SetBkColor($h_Rich, 0xC2CECE)
_GUICtrlEdit_Create($h_Form, 'Edit (UDF)', 247, 340, 434, 205, -1, $WS_EX_CLIENTEDGE)
GUICtrlCreateEdit('Edit (Native)', 247, 550, 434, 65, -1, $WS_EX_CLIENTEDGE)
GUICtrlSetBkColor ( -1, 0xAECAE0 )
GUICtrlCreateListView("Колонка1|кол2|кол3 ", 688, 5, 317, 190, -1,$LVS_EX_GRIDLINES )
GUICtrlSetBkColor ( -1, 0xAECAE0 )
_GUICtrlListView_AddItem(-1, "LV (Native)", 0)
$h_ListView = _GUICtrlListView_Create($h_Form, "Колонка1|кол2|кол3 ", 688, 200, 315, 155)
_GUICtrlListView_SetExtendedListViewStyle($h_ListView, $LVS_EX_GRIDLINES)
_GUICtrlListView_SetBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_SetTextBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_AddItem($h_ListView, "LV (UDF)", 0)
GUICtrlCreateList("List (Native)", 688, 360, 163, 260, $GUI_SS_DEFAULT_LIST)
GUICtrlSetBkColor ( -1, 0xAECAE0 )
$h_ListBox = _GUICtrlListBox_Create($h_Form, "ListBox (UDF)", 855, 360, 150, 265)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
EndSwitch
WEnd
Пример 2. Использование ф- ии : _ControlSetResizing($hCtrl, $iResParameters)
Код:
; Примечание : Возмжно использование с параметром -1 : _ControlSetResizing(-1, $iResParameters)
; где $iResParameters - параметр нативной ф-ии : GUICtrlSetResizing
#Include <WindowsConstants.au3>
#Include <GuiConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <GuiEdit.au3>
#include <GuiTreeView.au3>
#include <GuiTab.au3>
#include <GuiListView.au3>
#include "RSZ.au3"
$h_Form = GUICreate("Example 2(_ControlSetResizing)", 1210, 625, -1, -1, $WS_OVERLAPPEDWINDOW)
$h_TV1=_GUICtrlTreeView_Create($h_Form, 5, 5, 235, 615, $TVS_CHECKBOXES, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKWIDTH+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ.au3
_GUICtrlTreeView_SetBkColor($h_TV1, 0xCECEC2)
_GUICtrlTreeView_Add($h_TV1, 0, "TV (UDF)")
$h_Tab = _GUICtrlTab_Create($h_Form, 245, 5, 640, 615 )
_ControlSetResizing(-1, $GUI_DOCKBORDERS); ===> RSZ.au3
_GUICtrlTab_InsertItem($h_Tab, 0, "Вкладка 1")
_GUICtrlTab_InsertItem($h_Tab, 1, "Вкладка 2")
$h_Rich=_GUICtrlRichEdit_Create($h_Form, 'RichEdit', 247, 32, 634, 305, -1, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKBORDERS); ===> RSZ.au3
_GUICtrlRichEdit_SetBkColor($h_Rich, 0xC2CECE)
_GUICtrlEdit_Create($h_Form, 'Edit (UDF)', 247, 340, 634, 205, -1, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKHEIGHT+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlCreateEdit('Edit (Native)', 247, 550, 634, 65, -1, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKHEIGHT+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor ( -1, 0xAECAE0 )
$h_ListView = _GUICtrlListView_Create($h_Form, "Колонка1|кол2|кол3 ", 890, 5, 315, 615)
_ControlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKWIDTH+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ.au3
_GUICtrlListView_SetExtendedListViewStyle($h_ListView, $LVS_EX_GRIDLINES)
_GUICtrlListView_SetBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_SetTextBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_AddItem($h_ListView, "LV (UDF)", 0)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
EndSwitch
WEnd
Пример 3. Использование опции: Opt("GUIResizeMode", ...)
Код:
;Примечание : Использование опции аналогично использованию ее для нативных функций.
#Include <WindowsConstants.au3>
#Include <GuiConstantsEx.au3>
#include <GuiEdit.au3>
#include <GuiTreeView.au3>
#include <GuiTab.au3>
#include <GuiListView.au3>
#include "RSZ.au3"
Opt("GUIResizeMode",6)
$h_Form = GUICreate("Example 3 (Set Option)", 950, 625, -1, -1, $WS_OVERLAPPEDWINDOW)
$h_Tab = _GUICtrlTab_Create($h_Form, 5, 5, 640, 615 )
_GUICtrlTab_InsertItem($h_Tab, 0, "Вкладка 1")
_GUICtrlTab_InsertItem($h_Tab, 1, "Вкладка 2")
$h_ListView = _GUICtrlListView_Create($h_Form, "Колонка1|кол2|кол3 ", 7, 32, 634, 305)
_GUICtrlListView_SetExtendedListViewStyle($h_ListView, $LVS_EX_GRIDLINES)
_GUICtrlListView_SetBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_SetTextBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_AddItem($h_ListView, "LV (UDF)", 0)
_GUICtrlEdit_Create($h_Form, 'Edit (UDF)', 7, 340, 634, 205, -1, $WS_EX_CLIENTEDGE)
GUICtrlCreateEdit('Edit (Native)', 7, 550, 634, 65, -1, $WS_EX_CLIENTEDGE)
GUICtrlSetBkColor ( -1, 0xAECAE0 )
$h_TV=_GUICtrlTreeView_Create($h_Form, 647, 5, 300, 615, $TVS_CHECKBOXES, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKWIDTH+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ.au3
_GUICtrlTreeView_SetBkColor($h_TV, 0xCECEC2)
_GUICtrlTreeView_Add($h_TV, 0, "TV (UDF)")
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
EndSwitch
WEnd
Пример 4. Использование ф- ии : _ControlResizing
Код:
; Примечание : При использовании формата : _ControlResizing($Lab) задействуется автоконтроль размеров элементов
; Для отключения автоконтроля следет использовать формат : _ControlResizing($Lab, False)
#Include <GuiConstantsEx.au3>
#Include <WindowsConstants.au3>
#include <GuiRichEdit.au3>
#include <GuiTreeView.au3>
#include <GuiListView.au3>
#include <GuiListBox.au3>
#include "RSZ.au3"
$h_Form = GUICreate("Example 4 (_ControlResizing)", 520, 455)
$h_TV=_GUICtrlTreeView_Create($h_Form, 5, 5, 250, 210, $TVS_CHECKBOXES, $WS_EX_CLIENTEDGE)
_GUICtrlTreeView_SetBkColor($h_TV, 0xCECEC2)
_GUICtrlTreeView_Add($h_TV, 0, "TV (UDF)")
$h_ListView = _GUICtrlListView_Create($h_Form, "Колонка1|кол2|кол3 ", 5, 225, 250, 225)
_GUICtrlListView_SetExtendedListViewStyle($h_ListView, $LVS_EX_GRIDLINES)
_GUICtrlListView_SetBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_SetTextBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_AddItem($h_ListView, "LV (UDF)", 0)
$h_Rich=_GUICtrlRichEdit_Create($h_Form, 'RichEdit', 265, 5, 250, 210, -1, $WS_EX_CLIENTEDGE)
_GUICtrlRichEdit_SetBkColor($h_Rich, 0xC2CECE)
$h_ListBox = _GUICtrlListBox_Create($h_Form, "ListBox (UDF)", 265, 225, 250, 230)
$_ResLab_V=GUICtrlCreateLabel("", 258, 5, 4, 445)
GUICtrlSetBkColor(-1, 0xCE00C0)
GUICtrlSetCursor(-1, 13)
$_ResLab_H1 = GUICtrlCreateLabel("", 5, 218, 250, 4)
GUICtrlSetBkColor(-1, 0x0000C0)
GUICtrlSetCursor(-1, 11)
$_ResLab_H2 = GUICtrlCreateLabel("", 265, 218, 250, 4)
GUICtrlSetBkColor(-1, 0x0000C0)
GUICtrlSetCursor(-1, 11)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
Case $_ResLab_V To $_ResLab_H2
_ControlResizing($nMsg); ===> RSZ.au3
;*** При необходимости можно разрешать выведение Resize-линий за пределы окна : ***
;_ControlResizing($nMsg, False); ===> RSZ.au3
EndSwitch
WEnd
Пример 5. Использование ф- ии : _SetGUI_MinSize
Код:
; Примечания : При включенной опции : $i_Opt_Autodetect_MinSize=1 (по умолчанию),некорректое ограничение минимальных параметров окна игнорируется.
; При установке опции : $i_Opt_Autodetect_MinSize=0 выполнится ограничение на любом уровне.
#Include <WindowsConstants.au3>
#Include <GuiConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <GuiTreeView.au3>
#include "RSZ.au3"
$h_Form = GUICreate("Example 5 (_Set MinSize)",650, 425, -1, -1, $WS_OVERLAPPEDWINDOW)
$id_Auto=GUICtrlCreateCheckbox("Автоограничение", 10, 0, 120)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKSize+$GUI_DOCKTOP); ===> RSZ.au3
GUICtrlSetState ( -1, $GUI_CHECKED)
$h_TV=_GUICtrlTreeView_Create($h_Form, 5, 25, 250, 390, $TVS_CHECKBOXES, $WS_EX_CLIENTEDGE)
_GUICtrlTreeView_SetBkColor($h_TV, 0xCECEC2)
_GUICtrlTreeView_Add($h_TV, 0, "TV (UDF)")
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKWIDTH+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ.au3
$h_Rich=_GUICtrlRichEdit_Create($h_Form, 'RichEdit', 265, 5, 380, 410, -1, $WS_EX_CLIENTEDGE)
_GUICtrlRichEdit_SetBkColor($h_Rich, 0xC2CECE)
_ControlSetResizing(-1, $GUI_DOCKBORDERS); ===> RSZ.au3
_SetGUI_MinSize($h_Form, 200, 100); ===> RSZ.au3
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
Case $id_Auto
If BitAND(GUICtrlRead($id_Auto), $GUI_CHECKED)=$GUI_CHECKED Then
$i_Opt_Autodetect_MinSize=1
ElseIf BitAND(GUICtrlRead($id_Auto), $GUI_UNCHECKED)=$GUI_UNCHECKED Then
$i_Opt_Autodetect_MinSize=0
EndIf
EndSwitch
WEnd
Пример 6. Использование в скрипте ф- ии : _Register_WM_SIZE("Script_WM_SIZE")
Код:
; Примечание : При необходимости выполнения дополнительных действий при изменениии размеров окна задействуется ф-ия, имя которой задается.
#Include <WindowsConstants.au3>
#Include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include "RSZ.au3"
$h_Form = GUICreate("Example 6 (_Register WM_SIZE)", 550, 325, -1, -1, $WS_OVERLAPPEDWINDOW)
$h_ListView = _GUICtrlListView_Create($h_Form, "Колонка1|кол2|кол3 ", 5, 5, 540, 315)
_GUICtrlListView_SetExtendedListViewStyle($h_ListView, $LVS_EX_GRIDLINES)
_GUICtrlListView_SetBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_SetTextBkColor($h_ListView, 0xC2CECE)
_GUICtrlListView_AddItem($h_ListView, "LV (UDF)", 0)
_Register_WM_SIZE("Script_WM_SIZE"); ===> RSZ.au3
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
EndSwitch
WEnd
Func Script_WM_SIZE($hWnd, $nMsg, $wParam, $lParam)
$aGUIPos=WinGetPos ($hWnd)
Local $sText= _
"Width = " & $aGUIPos[2] & _
" Height = " & $aGUIPos[3]
WinSetTitle($hWnd, '', $sText)
Return $GUI_RUNDEFMSG
EndFunc
Пример 7. Использование ф- ии _InitGUI : в многооконном скрипте
Код:
; Примечание : Первичная инициалицация элементов окон выполняется при первом наведении курсора мыши на главное окно.
; В случае создания в процессе работы скрипта дополнительных окон, требуется инициализация эл-тов дополнительного окна.
#Include <WindowsConstants.au3>;~~~
#Include <GuiConstantsEx.au3>;~~~
#include <GuiRichEdit.au3>
#include <GuiTreeView.au3>
#include <GuiEdit.au3>
#include "RSZ.au3"
Global $h_GUI_2, $a_ResLab[1]
$h_Form = GUICreate("Example 7 (n-Windows)", 550, 425, -1, -1, $WS_OVERLAPPEDWINDOW)
$iFileMenu = GUICtrlCreateMenu("")
$iViewMenu = GUICtrlCreateMenuItem("Win Create", -1)
$h_Rich=_GUICtrlRichEdit_Create($h_Form, '_RichEdit', 5, 5, 340, 415, -1, $WS_EX_CLIENTEDGE)
_GUICtrlRichEdit_SetBkColor($h_Rich, 0xC2CECE)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKWidth+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ.au3
$h_TV1=_GUICtrlTreeView_Create($h_Form, 355, 5, 185, 415, $TVS_CHECKBOXES, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKBorders); ===> RSZ.au3
_GUICtrlTreeView_SetBkColor($h_TV1, 0xCECEC2)
_GUICtrlTreeView_Add($h_TV1, 0, "C:")
$_ResLab_V=GUICtrlCreateLabel("", 348, 5, 4, 415)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKWidth+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor(-1, 0xCE00C0)
GUICtrlSetCursor(-1, 13)
$h_GUI_1 = GUICreate('1', 300, 400, -1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SIZEBOX), $WS_EX_DLGMODALFRAME, $h_Form)
$h_TV2= _GUICtrlTreeView_Create($h_GUI_1, 5, 5, 140, 370, -1, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKWidth+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ.au3
_GUICtrlTreeView_SetBkColor($h_TV2, 0xCEC5C5)
_GUICtrlTreeView_Add($h_TV2, 0, "C:")
_GUICtrlEdit_Create($h_GUI_1, 'Edit (UDF)', 155, 5, 140, 370, -1, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKBorders); ===> RSZ.au3
GUICtrlCreateButton("Button 3",5, 380, 290, 20)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKRight++$GUI_DOCKBOTTOM++$GUI_DOCKHEIGHT); ===> RSZ.au3
$_ResLab_V2=GUICtrlCreateLabel("", 148, 5, 4, 370)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKWidth+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor(-1, 0xCE00C0)
GUICtrlSetCursor(-1, 13)
_Register_WM_SIZE("Script_WM_SIZE"); ===> RSZ.au3
GUISetState(@SW_SHOW, $h_Form)
GUISetState(@SW_SHOW, $h_GUI_1)
While 1
$aMsg = GUIGetMsg(1)
Switch $aMsg[0]
Case $GUI_EVENT_CLOSE
If $aMsg[1]=$h_Form Then
GUIDelete($h_Form )
Exit
Else
GUISetState(@SW_HIDE, $aMsg[1])
EndIf
Case $_ResLab_V, $_ResLab_V2
_ControlResizing($aMsg[0]); ===> RSZ.au3
Case $iViewMenu
_WinCreate()
EndSwitch
For $i = 1 To UBound($a_ResLab)-1
If $a_ResLab[$i] =$aMsg[0] Then
_ControlResizing($aMsg[0]); ===> RSZ.au3
EndIf
Next
WEnd
Func Script_WM_SIZE($hWnd, $nMsg, $wParam, $lParam)
$aGUIPos=WinGetPos ($hWnd)
Local $sText= _
"Width = " & $aGUIPos[2] & _
" Height = " & $aGUIPos[3]
WinSetTitle($hWnd, '', $sText)
Return $GUI_RUNDEFMSG
EndFunc
Func _WinCreate()
$h_GUI_2 = GUICreate('2', 300, 370,5, 5, BitOR($WS_CAPTION, $WS_POPUP, $WS_SIZEBOX), $WS_EX_DLGMODALFRAME, $h_Form)
Local $h_TV3= _GUICtrlTreeView_Create($h_GUI_2, 5, 5, 140, 340, -1, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKWidth+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ.au3
_GUICtrlTreeView_SetBkColor($h_TV3, 0xCEC5C5)
_GUICtrlTreeView_Add($h_TV3, 0, "C:")
_GUICtrlEdit_Create($h_GUI_2, 'Edit (UDF)', 155, 5, 140, 340, -1, $WS_EX_CLIENTEDGE)
_ControlSetResizing(-1, $GUI_DOCKBorders); ===> RSZ.au3
GUICtrlCreateButton("Button 3",5, 350, 290, 20)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKRight++$GUI_DOCKBOTTOM++$GUI_DOCKHEIGHT); ===> RSZ.au3
Local $Lab=GUICtrlCreateLabel("", 148, 5, 4, 340)
_ControlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKWidth+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ.au3
GUICtrlSetBkColor(-1, 0xCE00C0)
GUICtrlSetCursor(-1, 13)
_ArrayAdd($a_ResLab,$Lab)
_InitGUI($h_GUI_2); ===> RSZ.au3
GUISetState(@SW_SHOW, $h_GUI_2)
EndFunc
В архив также заложен тестовый пример на адекватность поведения элементов (Native & UDF).
Файл: RSZ v4.5.rar
История версий:
v1.0 - 01.09.2012
v2.0 - 03.09.2012
* Скорректирована работа при нескольких дочерних окнах
V2.1 - 04.09.2012
* Упрощено обращение к ф- ии :Теперь не надо указывать : Дескриптор окна ($hWnd) и необязателен : Дескриптор элемента ($hCtrl)
Достаточно :
_ControlSetResizing (-1, $iResParameters)
* В случае задания _ControlSetResizing() для элемента, созданного с помощью штатной ф-ии GUICreate
выполнится переадресация к штатной ф-ии :
GUICtrlSetResizing (-1, $iResParameters)
* Есть возможность задания минимальных параметров (для ф-ии WM_GETMINMAXINFO) окна для нескольких окон.
V3.0 - 10.09.2012
* Добавлена возможностьперемещения изменения размеров элементов с помощью Resize-линий
Примечание : Перемещаемые элементы выявляются автоматически
V3.2 - ... .10.2012
* Увеличена скорость изменения размеров элементов с помощью Resize-линий за счет выведения автоопределения перемещаемых элементов
из функции перемещения (_ControlResize) в отдельную ф-ию ( _Init ) с однократным обращением к ней в начале работы скрипта и применением в автоопределении WinAPI.
* Добавлено автоопределение минимально допустимых размеров окна с сохранением возможности задания минимальных параметров (для ф-ии WM_GETMINMAXINFO)
(Примечание. Автоопределение контролирует только неравенство 0 размеров элементов и нестолкновение элементов с границами окна)
* Добавлена реакция элементов GUI, созданных с помощью UDF на установку Опции : Opt("GUIResizeMode")
V4.1 - 14 .11.2012 Файл: RSZ v4.1.rar
* Изменен принцип инициализации элементов. Теперь инициализация (и выявление перемещаемых элементов) выполняется и при свернутом состоянии окна.
V4.5 - 27 .06.2013
* Изменен принцип инициализации элементов. Теперь первичная инициализация выполняется при первом наведении курсора на главное окно скрипта.Дополнительная инициализация
может потребоваться только в случае создания новых окон в процессе работы скрипта (Пример 7).
* Упрощено встраивание UDF в скрипт. Теперь используются в основном 2 ф-ии (_ControlSetResizing и _ControlResize).
Остальные 3 ф-ии являются сервисными и используются по необходимости.
* Обеспечена возможность упрощенного использования UDF :
- Только в режиме изменения размера окон (Примеры 1-3).
- Только в режиме изменения с помощью Resize-линий (Пример 4).
- В комбинированном режиме.(Demo 1)
* Добавлена возможность включения режима выведения Resize-линий за пределы окна, игнорируя автоопределение размеров эл-тов (Пример 4).
* Добавлена возможность отключения режима автоограничения размеров окон.(Пример 5)
* Упрощено использование cкриптовой ф-ии WM_SIZE (Пример 6).
v2.0 - 03.09.2012
* Скорректирована работа при нескольких дочерних окнах
V2.1 - 04.09.2012
* Упрощено обращение к ф- ии :Теперь не надо указывать : Дескриптор окна ($hWnd) и необязателен : Дескриптор элемента ($hCtrl)
Достаточно :
_ControlSetResizing (-1, $iResParameters)
* В случае задания _ControlSetResizing() для элемента, созданного с помощью штатной ф-ии GUICreate
выполнится переадресация к штатной ф-ии :
GUICtrlSetResizing (-1, $iResParameters)
* Есть возможность задания минимальных параметров (для ф-ии WM_GETMINMAXINFO) окна для нескольких окон.
V3.0 - 10.09.2012
* Добавлена возможность
Примечание : Перемещаемые элементы выявляются автоматически
V3.2 - ... .10.2012
* Увеличена скорость изменения размеров элементов с помощью Resize-линий за счет выведения автоопределения перемещаемых элементов
из функции перемещения (_ControlResize) в отдельную ф-ию ( _Init ) с однократным обращением к ней в начале работы скрипта и применением в автоопределении WinAPI.
* Добавлено автоопределение минимально допустимых размеров окна с сохранением возможности задания минимальных параметров (для ф-ии WM_GETMINMAXINFO)
(Примечание. Автоопределение контролирует только неравенство 0 размеров элементов и нестолкновение элементов с границами окна)
* Добавлена реакция элементов GUI, созданных с помощью UDF на установку Опции : Opt("GUIResizeMode")
V4.1 - 14 .11.2012 Файл: RSZ v4.1.rar
* Изменен принцип инициализации элементов. Теперь инициализация (и выявление перемещаемых элементов) выполняется и при свернутом состоянии окна.
V4.5 - 27 .06.2013
* Изменен принцип инициализации элементов. Теперь первичная инициализация выполняется при первом наведении курсора на главное окно скрипта.Дополнительная инициализация
может потребоваться только в случае создания новых окон в процессе работы скрипта (Пример 7).
* Упрощено встраивание UDF в скрипт. Теперь используются в основном 2 ф-ии (_ControlSetResizing и _ControlResize).
Остальные 3 ф-ии являются сервисными и используются по необходимости.
* Обеспечена возможность упрощенного использования UDF :
- Только в режиме изменения размера окон (Примеры 1-3).
- Только в режиме изменения с помощью Resize-линий (Пример 4).
- В комбинированном режиме.(Demo 1)
* Добавлена возможность включения режима выведения Resize-линий за пределы окна, игнорируя автоопределение размеров эл-тов (Пример 4).
* Добавлена возможность отключения режима автоограничения размеров окон.(Пример 5)
* Упрощено использование cкриптовой ф-ии WM_SIZE (Пример 6).
Источник: autoit-script.ru
Автор: gregaz