Что нового

UDF RSZ.au3 (v4.5) Некорректное изменение размера c элементом меню

pvnn

Осваивающий
Сообщения
281
Репутация
31
Всем доброго времени суток.
Для изменения размера контролов использую UDF RSZ.au3 (v4.5) http://autoit-script.ru/index.php?topic=11231.msg73947#msg73947
Если на форме есть меню, созданное командой GUICtrlCreateMenu(), то
В результате некорректно изменяется размер элементов на форме

Пример:
Код:
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ListViewConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>

#include <GuiTreeView.au3>
#include <GuiListView.au3>

#include "RSZ.au3"
#include <GuiMenu.au3>

$Form1 = GUICreate("Form1", 444, 258, 293, 267,$WS_SIZEBOX)

$MenuItem1 = GUICtrlCreateMenu("MenuItem1")
$MenuItem2 = GUICtrlCreateMenu("MenuItem2")

;Если раскомментировать, то работает
;~  $hFile = _GUICtrlMenu_CreateMenu ()
;~  _GUICtrlMenu_AddMenuItem ($hFile, "Новый")
;~  _GUICtrlMenu_SetMenu ($Form1, $hFile)


$TreeView1 = _GUICtrlTreeView_Create($Form1,4, 10, 129, 185)
 _ControlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKTOP+$GUI_DOCKBOTTOM); ===> RSZ

$hListView = _GUICtrlListView_Create($Form1,"", 140, 10, 298, 185)
 _ControlSetResizing(-1,  $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKBOTTOM ); ===> RSZ
  _GUICtrlListView_InsertColumn($hListView, 0, "Имя", 50)

; Разделитель между TreeView и ListView
  $Separator=GUICtrlCreateLabel("", 129+6, 5, 2, 185)
 _ControlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKWIDTH + $GUI_DOCKTOP + $GUI_DOCKBOTTOM); ===> RSZ
  GUICtrlSetBkColor(-1, 0xCE00C0)
  GUICtrlSetCursor(-1, 13)

$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
  _ControlSetResizing($StatusBar1, BitOR($GUI_DOCKLEFT, $GUI_DOCKRIGHT)); ===> RSZ

GUISetState(@SW_SHOW)
_GUICtrlStatusBar_Resize($StatusBar1) ; Корректирует позицию


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Separator
			_ControlResizing($nMsg); ===> RSZ.au3
	EndSwitch
WEnd

Измените размер окна, элементы "прыгнут"
 

joiner

Модератор
Локальный модератор
Сообщения
3 338
Репутация
574
точно, есть некорректное поведение при изменении размеров окна
плюс артефакты при перемещении линии
пробуй так
создать меню используя udf

Код:
$hFile = _GUICtrlMenu_CreateMenu ()
 _GUICtrlMenu_AddMenuItem ($hFile, "MenuItem1")
 _GUICtrlMenu_AddMenuItem ($hFile, "MenuItem2")
 _GUICtrlMenu_SetMenu ($Form1, $hFile)

смести линию
Код:
$Separator=GUICtrlCreateLabel("", 129+6, 10, 2, 200)


чтобы артефактов не было (если они есть у тебя) нужно обновлять окно
 
Автор
P

pvnn

Осваивающий
Сообщения
281
Репутация
31
joiner, у меня уже готовый код, с большим количеством элементов меню (дополнительно использую UDF ModernMenuRaw.au3), очень долго придется переписывать. Может автор UDF откликнется?! Или может уже кто-то решил подобную проблему.
 
Верх