本帖最后由 kk_lee69 于 2012-11-14 21:14 编辑
求助 一个GUI窗口下 LISTVIEW双击事件呼叫另外一个GUI窗口,程序会卡住求解
設計了一個主表單 裡面有個 LISTVIEW 利用 LISTVIEW 的雙擊事件 呼叫 另外一個表單,請教寫法與思路....
因為我自己的寫法 會造成 程式卡住........我自己認為是因為 迴圈之類的問題 造成 卡住.......變成程式無回應.....
因為程式有4千多行......因此濃縮如下: 只剩下主架構......求高手 解惑一下 , 怎要修改 才不會卡住
$WinMain = GuiCreate('主選單',900,700)
; 創建窗口
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
$listview = GUICtrlCreateListView("合約編號 |合約日期 |客戶名稱 ", 10, 35, 880, 310, -1, BitOR( $LVS_REPORT,$LVS_SHOWSELALWAYS));,$LVS_SORTDESCENDING)
GuiSetState()
; 顯示視窗
While 1
;_ReduceMemory(@AutoItPID)
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $listview
; Kick off the sort callback
_GUICtrlListView_SortItems($listview, GUICtrlGetState($listview))
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $message, $wParam, $sParam)
Local $tNmhdr, $hWndFrom, $code
$tNmhdr = DLLStructCreate($tagNmhdr, $sParam)
$hWndFrom = DLLStructGetData($tNmhdr, "hWndFrom")
$code = DLLStructGetData($tNmhdr, "code")
$tNmhdr = 0
Switch $code
Case $NM_CLICK
Switch $hWndFrom
Case $hWndFrom = GuiCtrlGetHandle($ListView)
Case $hWndFrom = GuiCtrlGetHandle($ListView2)
CASE $hWndFrom = GuiCtrlGetHandle($ListView3)
Case $hWndFrom = GuiCtrlGetHandle($ListView4)
EndSwitch
Case $NM_DBLCLK
Switch $hWndFrom
Case $hWndFrom = GuiCtrlGetHandle($ListView)
ContractMENU() ;雙擊事件 呼叫另外一個 FROM
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>_wmNotify()
Func ContractMENU()
$WinSUB = GuiCreate('批次刪除 已經輸入過的 支票資料',800,600,-1,-1,-1,-1);,$WinMain)
GUICtrlCreateGroup('帳款資料', 5, 5, 790, 400)
$DELACC1 = GuiCtrlCreateButton('刪除全部現金付款', 10, 420, 120, 30); 清除紀錄按鈕
$DELACC2 = GuiCtrlCreateButton('刪除全部支票資料', 135, 420, 120, 30); 清除紀錄按鈕
$DELACC3 = GuiCtrlCreateButton('刪除全部本票資料', 260, 420, 120, 30); 清除紀錄按鈕
$DELACC4 = GuiCtrlCreateButton('刪除全部 ACH 轉帳',385, 420, 120, 30); 清除紀錄按鈕
$DELACC5 = GuiCtrlCreateButton('刪除全部超商繳款', 510, 420, 120, 30); 清除紀錄按鈕
$DELACC6 = GuiCtrlCreateButton('刪除全部其他資料', 635, 420, 120, 30); 清除紀錄按鈕
GUISetState()
While 1
Switch guigetmsg()
Case $GUI_EVENT_CLOSE
GUISetState(@SW_ENABLE,$WinMain)
GUIDelete($WinSUB)
WinActivate($WinMain,"")
ExitLoop
EndSwitch
WEnd
EndFunc
|