Дык вопрос-то был только про ширину ListView. При необходимости размер всего диалогового окна можно подогнать через Gui, Show, AutoSize, а примерно вычислить необходимую высоту ListView при помощи сообщения LVM_APPROXIMATEVIEWRECT. Как показывает практика, ошибка аппроксимации всегда примерно одинакова и её можно учесть, в примере ниже я этого не делал:
Gui, Add, ListView, HWNDhListViev r1, 1|2
SendMessage, 0x1057, 0, "1", , ahk_id%hListViev%
SizeFirst := ErrorLevel + 12
SendMessage, 0x1057, 0, "2", , ahk_id%hListViev%
SiseSecond := ErrorLevel + 12
LV_ModifyCol(1, SizeFirst)
LV_ModifyCol(2, SiseSecond)
ControlMove, , , , SizeFirst+SiseSecond+4, , ahk_id%hListViev%
Gui, Add, Button, w75 glButtonEnter HWNDhButton, Enter
Gui, Add, Edit, xp+100 w75 vEdit1 HWNDhEdit1, one
Gui, Add, Edit, xp+100 w75 vEdit2 HWNDhEdit2, two
Gui, Show, , карамба!
return
lButtonEnter:
Gui, Submit, NoHide
SendMessage, 0x1057, 0, &Edit1, , ahk_id%hListViev%
Size := ErrorLevel + 12
if(Size>SizeFirst)
SizeFirst := Size
SendMessage, 0x1057, 0, &Edit2, , ahk_id%hListViev%
Size := ErrorLevel + 12
if(Size>SiseSecond)
SiseSecond := Size
LV_Add("", Edit1, Edit2)
LV_ModifyCol(1, SizeFirst)
LV_ModifyCol(2, SiseSecond)
SendMessage, 0x1040, -1, -1, , ahk_id%hListViev%
ListViewHeight := (ErrorLevel>>16)&0xFFFF
ControlMove, , , , SizeFirst+SiseSecond+4, ListViewHeight, ahk_id%hListViev%
ControlMove, , , ListViewHeight+40, , , ahk_id%hButton%
ControlMove, , , ListViewHeight+40, , , ahk_id%hEdit1%
ControlMove, , , ListViewHeight+40, , , ahk_id%hEdit2%
Gui, Show, AutoSize
return
Esc::
GuiClose:
ButtonOK:
ExitApp
return