Всем Привет
Есть скрипт
При двойном клике на 3 колонке должно появиться дочернее окно. Если вызвать функцию отображения дочернего окна не по двойному клику то все работает нормально, а вот при вызове через двойной клик дочернее окно зависает.
Подскажите пожалуйста в чем проблема.
Есть скрипт
Код:
#Region Includes
#include <Date.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <StructureConstants.au3>
#include <WindowsConstants.au3>
#EndRegion Includes
; #NoTrayIcon
Opt("TrayIconDebug", 1)
Opt("GUICloseOnESC", 1)
Dim $aData[11][4] = [[10, "", "", ""]]
For $i = 1 To $aData[0][0]
$aData[$i][0] = "Flight Crew " & StringFormat("%02d", $i)
$aData[$i][1] = StringFormat("%04d/%02d/%02d", Random(2009, 2010, 1), Random(1, 12, 1), Random(1, 28, 1))
$aData[$i][2] = _DateAdd("Y", 1, $aData[$i][1])
Next
$hMainGui = GUICreate("Demo", 500, 300, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
$hListView = GUICtrlCreateListView("Name|Pass Date|Expire Date", 5, 5, 490, 290)
GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
For $fc = 1 To $aData[0][0]
_GUICtrlListView_AddItem($hListView, $aData[$fc][0], $fc - 1)
_GUICtrlListView_AddSubItem($hListView, $fc - 1, $aData[$fc][1], 1)
_GUICtrlListView_AddSubItem($hListView, $fc - 1, $aData[$fc][2], 2)
Next
GUICtrlSendMsg($hListView, 0x101E, 0, -1) ; Resize to widest value
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState(@SW_SHOW)
_ShowEditor()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_Close()
EndSwitch
WEnd
Func _ShowEditor()
Local $iEditorLeft = -1, $iEditorTop = -1, $iEditorWidth = 510, $iEditorHeight = 400
Local $EditorStyle = BitOR($WS_CAPTION, $WS_POPUP, $WS_DLGFRAME), $EditorExStyle = BitOR($WS_EX_OVERLAPPEDWINDOW, $WS_EX_TOOLWINDOW)
$hEditor = GUICreate("Demo Editor", $iEditorWidth, $iEditorHeight, $iEditorLeft, $iEditorTop, $EditorStyle, $EditorExStyle, $hMainGui)
Local $iButtonLeft = 5, $iButtonTop = 50, $iButtonWidth = ($iEditorWidth) / 2, $iButtonHeight = 25
$Confirm = GUICtrlCreateButton("Confirm", $iButtonLeft, $iButtonTop, $iButtonWidth, $iButtonHeight)
$Cancel = GUICtrlCreateButton("Cancel", $iButtonLeft + $iButtonWidth, $iButtonTop, $iButtonWidth, $iButtonHeight)
GUISetState(@SW_DISABLE, $hMainGui)
GUISetState(@SW_SHOW, $hEditor)
GUISwitch($hEditor)
While 1
Switch GUIGetMsg()
Case $Cancel
ExitLoop
EndSwitch
WEnd
GUISetState(@SW_ENABLE, $hMainGui)
GUIDelete($hEditor)
GUISwitch($hMainGui)
EndFunc
Func _Close()
Exit
EndFunc ;==>_Close
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
If Not IsHWnd($hListView) Then $hListView = GUICtrlGetHandle($hListView)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hListView
Switch $iCode
Case $NM_DBLCLK
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
$iItem = DllStructGetData($tInfo, "Index")
$iSubItem = DllStructGetData($tInfo, "SubItem")
If $iSubItem = 1 Then MsgBox(0, "", "$iItem = " & $iItem & " | $iSubItem = " & $iSubItem & @CR)
If $iSubItem = 2 Then _ShowEditor()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
При двойном клике на 3 колонке должно появиться дочернее окно. Если вызвать функцию отображения дочернего окна не по двойному клику то все работает нормально, а вот при вызове через двойной клик дочернее окно зависает.
Подскажите пожалуйста в чем проблема.