Что нового

[Элементы GUI] Чем отличается GUICtrlSetPos от ControlMove

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
В чем отличие функций :

Код:
GUICtrlSetPos($iID, Default, 100)
ControlMove($hWnd, "", $hCtrl, Default, 100)


Возможно это только для меня было неизвестным.

Оказывается кроме всего прочего :
в различии поведения элементов при изменении размера окна GUI
Демо :
Код:
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>

$h_Form = GUICreate("Demo", 800, 600, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
GUISetBkColor(0xECE9D8)

$_ResLab_V=GUICtrlCreateLabel("", 532, 10, 6, 580)
GUICtrlSetBkColor(-1, 0xCE00C0)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKTOP + $GUI_DOCKBOTTOM)

$_ResLab_H=GUICtrlCreateLabel("", 10, 487, 520, 6)
GUICtrlSetBkColor(-1, 0x0000C0)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKLEFT + $GUI_DOCKHEIGHT + $GUI_DOCKBOTTOM)
 
$_But=GUICtrlCreateButton("Move", 750, 580, 40, 20)
 
GUISetState()

 While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $_But
			GUICtrlSetPos($_ResLab_V, 100,Default)
			ControlMove($h_Form, "", $_ResLab_H, Default, 100)
	EndSwitch
WEnd

Мне пришлось достаточно много времени потратить, чтобы найти причину неправильной работы моего скрипта при Resize,
поэтому решил опубликовать.
Возможно кто-то и не знал
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,487
Я если честно не понял, в чём различие в данном примере?
Я только знаю что для элементов созданных с AutoIt желательно использовать GUICtrlSetPos.
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
CreatoR [?]
Я если честно не понял, в чём различие в данном примере?

Но в принципе ведь можно переместить элемент, созданный с AutoIt и с помощью ControlMove
Но тогда при изменении размера окна выполняется Resize этого элемента , но исходя из первоначальных позиций,игнорируя
выполненное перемещение ControlMove

Это видно если изменить размер окна до нажатия кнопки и после
 
Верх