Что нового

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

pvnn

Осваивающий
Сообщения
305
Репутация
32
Всем доброго времени суток.
Для изменения размера контролов использую 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,570
Репутация
632
точно, есть некорректное поведение при изменении размеров окна
плюс артефакты при перемещении линии
пробуй так
создать меню используя 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

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