Что нового

[Элементы GUI] Пропорционально увеличить ListView на размер развернутого на весь экран окна

erlik

Продвинутый
Сообщения
317
Репутация
84
Не получается увеличить ListView на размер окна. Понимаю, что проблема банальная, но уже два дня мучаюсь :(
Вот так не работает:
Код:
GUICtrlSetResizing ( $hListView, $GUI_DOCKBORDERS) или 
GUICtrlSetResizing ( $hListView, $GUI_DOCKAUTO)

Главное окно создано со стилем
Код:
BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX)
ListView создан  через _GUICtrlListView_Create   со стилем _GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
И не получится, поскольку GUICtrlSetResizing() работает только с нативными функциями, т.е. GUICtrlCreateListView(). Для _GUICtrlListView_Create() используй WM_SIZE. А вообще, нет никакого смысла работать с _GUICtrlListView_Create().
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Yashied
Код:
Global Const $SIZE_MAXIMIZED=2
; в цикле опроса окна - на событие максимизации окна поставил отправку сообщения- результат - список не увеличивается и пропадают все записи из него.
 Case $GUI_EVENT_MAXIMIZE
            GUISetState(@SW_MAXIMIZE, $hMainWnd)
			_SendMessage($hListView,  $SIZE_MAXIMIZED)


---------------------------------------------------------------------------------------------
Помогите пожалуйста доделать вот этот код - я здесь мало что понимаю.
Код:
Func WM_SIZE($hWnd, $iMsg, $wParam, $iParam)
	    Switch $hWnd  ; здесь хендел окна указывать?
	         Case $hListView
                 ;здесь увеличим ListView
		 Case $hStatusBar
                     ;здесь статус бар
            _GUICtrlStatusBar_Resize($hStatusBar)
	 EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
erlik
Можно конечно так сделать
Код:
Func WM_SIZE($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_MoveWindow($hListView, 10, 10, BitAND($lParam, 0x0000FFFF)-20, BitShift($lParam, 16)-20)
    Return $GUI_RUNDEFMSG
EndFunc


А можно просто использовать GUICtrlCreateListView + GUICtrlSetResizing. Все выше описанные стили и функции с ним работают. Единственное что может вызвать проблему - заранее получить дескриптор ListView и в одних случаях использовать $ListView в других $hListView.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
AZJIO
Спасибо за пример. Но вы меня с Yashied уговорили таки использовать GUICtrlCreateListView :smile:
Поэтому сделал через него - не хотел сразу менять, так как думал, что много кода придется переписывать - оказалось что нет.
Впрочем событие WM_SIZE все таки сгодилось - для корректного изменения размера статус бара.
 
Верх