|
本帖最后由 kk_lee69 于 2012-11-18 01:17 编辑
多个 LISTVIEW 在一个大循环里面 为何会 LISTVIEW的句柄会判断错误??
希望高手幫忙解惑一下!! 多个 LISTVIEW 在一个大循环里面 为何会 LISTVIEW的句柄会判断错误??
我的 程式有四千多行 我濃縮了一下 弄了個主架構.........
簡單的說是 一個大循環 裡面有多個 LISTVIEW 利用 GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
去做單擊事件的判斷.........然後做動作.......
LISTVIEW1 跟 LISTVIEW2 都是 在主GUI裡面 程式一執行就存在.......其他的LISTVIEW 都是有需要再呼叫出來使用 不要在刪除...
當我 呼叫出 LISTVIEW3 之後 退出 再重新呼叫 LISTVIEW7 的時候 單擊事件 就會發生錯誤 會被判斷為 LISTVIEW3 的單擊事件
而產生下面的錯誤
IF $STarray3[17]="" Then
IF ^ ERROR
求高手解惑一下 謝謝!!
補充描述 :
我大概抓到原因了~~~ 是 邏輯上的問題......所以求助 高手 請教如何解決這種問題......
因為我的程式 是一個大循環 有個主要的 GUI 按下某個按鈕.....會呼叫 子GUI.....當 子GUI 退出後 當然就回到主要的GUI 畫面...
每個 GUI 都有 LISTVIEW.....而我用 GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") 判斷 LISTVIEW 做按鈕的 DISABLE 或者 ENABLE
第一個 子 GUI 的 LISTVIEW 名稱叫做 $LISTVIEW3 ==>呼叫後 $LISTVIEW3 這個變數會變成 53
第二個 子 GUI 的 LISTVIEW 名稱叫做 $LISTVIEW7 ==>呼叫後 $LISTVIEW7 這個變數剛好被分配的也是 53
而 GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") 的判斷 裡面是 CASE $hWndFrom = GuiCtrlGetHandle($ListView3) 排在 CASE $hWndFrom = GuiCtrlGetHandle($ListView7) 的前面
所以當我進入到 第二個 子GUI 點擊到 LISTVIEW7 的時候 .........由於 $LISTVIEW3 =53 而 $LISTVIEW7 也是 53
所以 CASE $hWndFrom = GuiCtrlGetHandle($ListView3) 跟 CASE $hWndFrom = GuiCtrlGetHandle($ListView7) 都會變成 CASE $hWndFrom = GuiCtrlGetHandle( 53 )
所以程式就先跑第一個 CASE $hWndFrom = GuiCtrlGetHandle($ListView3) 就符合了...... 但是 事實上 第一個 子 GUI 的 LISTVIEW3 早就被我GUIDEL 掉了.....
所以 底下的程式就會出錯誤了.............這樣說 不知道是否能夠表達問題的癥結點?? |
|