Что нового

Отловить выделение строки в ListView в режиме MessageLoop.

tigerby

Новичок
Сообщения
2
Репутация
0
Всем привет. Помогите с тривиальной задачей
Надо отловить выделение строки в ListView в режиме MessageLoop.
Создаю ListView и заполняю списком файлов из определенной директории
Код:
$FileListView = GUICtrlCreateListView("", 656, 64, 226, 390)
$fileArray = _FileListToArray($wcopyRepoQA,"*.htm",1)
_GUICtrlListView_AddColumn($FileListView, "Items", 5000)
Local $aItems[5000][1]
    For $iI = 1 To UBound($fileArray) - 1
        $aItems[$iI-1][0] =  $fileArray[$iI]
    Next

 _GUICtrlListView_AddArray($FileListView, $aItems)

Затем пытаюсь отловить
Код:
While 1
	 $nMsg = GUIGetMsg(1)
          Case $nMsg[0] == $FileListView 	
			MsgBox(0,"","Выбран элемент ListView",0,$qa)

Но срабатывает лишь тогда когда я нажимаю на заголовок колонки ListView.
Заранее благодарен за помощь.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
#Include <GUIConstantsEx.au3>
#Include <GUIListView.au3>
#Include <WindowsConstants.au3>

GUICreate('MyGUI', 280, 391)
$ListView = GUICtrlCreateListView('Property', 10, 10, 260, 371, -1, $WS_EX_CLIENTEDGE)
$hListView = GUICtrlGetHandle(-1)
For $i = 1 To 5
    _GUICtrlListView_AddItem($hListView, 'Item' & $i)
Next
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
	EndSwitch
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)

    Local $tNMITEMACTIVATE = DllStructCreate($tagNMITEMACTIVATE, $lParam)
    Local $hWndFrom = DllStructGetData($tNMITEMACTIVATE, 'hWndFrom')
    Local $Index = DllStructGetData($tNMITEMACTIVATE, 'Index')
    Local $Code = DllStructGetData($tNMITEMACTIVATE, 'Code')

    Switch $hWndFrom
        Case $hListView
            Switch $Code
                Case $LVN_ITEMCHANGED
                    If (BitAND(DllStructGetData($tNMITEMACTIVATE, 'NewState'), $LVIS_SELECTED)) And (Not BitAND(DllStructGetData($tNMITEMACTIVATE, 'OldState'), $LVIS_FOCUSED)) Then
						ConsoleWrite(_GUICtrlListView_GetItemText($hListView, $Index & ' has been selected.') & @CR)
                    EndIf
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
 
Верх