Что нового

[Элементы GUI] Определение ошибки в GUISetState

Dimmak

Знающий
Сообщения
185
Репутация
9
Помогите, пожалуйста, определить ошибку! :stars:
=> Запускаю скрипт => правый клик на val_1 => "ExitScript"
val_1 удаляется из списка ( нужный результат )

Если закрыть-открыть окно по горячей клавише - все ок!
Объект удаляется из списка.

Но если закрыть окно(x) через $GUI_EVENT_CLOSE, снова открыть посредством горячей клавиши и выполнить
правый клик на val_1 => "ExitScript" - элемент из списка не удалится.

Все работает до тех пор, пока не закрою окно(х).
Case $GUI_EVENT_CLOSE... :scratch:


Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#Include <WinAPIex.au3>
#include <Constants.au3>
#include <Process.au3>
#include <Misc.au3>
	#Include <HotKey.au3>
	#Include <vkConstants.au3>
;#Include <_my.au3>
							#include-once
							#NoTrayIcon
	_singleton(@ScriptName)

_HotKeyAssign(BitOR($CK_CONTROL, $CK_SHIFT, $VK_1), '_Show')


Dim $arr[4]
$arr[1] = 'val_1'
$arr[2] = 'val_2'
$arr[3] = 'val_3'

$Gui = GUICreate("Prs_Mngr",225 ,260 ,-1,-1)
$ListView = GUICtrlCreateListView("Name|PiD",5,5,215,215,-1)
$MenuList =  GUICtrlCreateContextMenu($ListView)

	$MenuKIllItem = GUICtrlCreateMenuItem("ExitScript", $MenuList)
		$MenuSep = GUICtrlCreateMenuItem("", $MenuList)
	$MenuRestartItem = GUICtrlCreateMenuItem("Restart", $MenuList)
	$MenuToggleItem = GUICtrlCreateMenuItem("Toggle", $MenuList)

_GUICtrlListView_SetColumnWidth($ListView , 0, 150)
_GUICtrlListView_SetColumnWidth($ListView , 1, 60)

For $i = 1 to 3
	_GUICtrlListView_AddItem($ListView, $arr[$i] , $i,_GUICtrlListView_GetItemCount($ListView) + 9999)
Next

WinMove($Gui, "", 1050, 685)
GUISetState(@SW_SHOW, $Gui)


While 1

$msg = GUIGetMsg()



Switch $msg
 	Case $GUI_EVENT_CLOSE
		GUISetState(@SW_HIDE, $Gui)

	Case $MenuKIllItem
			$cell = ControlListView ($Gui, "", $ListView, "GetSelected")
					GUICtrlSendMsg ( $ListView, $LVM_DELETEITEM, $cell -0, 0)
 Case $MenuRestartItem
			msb('2')
    Case $MenuToggleItem
			msb('3')

EndSwitch

WEnd


Func _Show() ; CTRL +SHIFT +1


	$iState = WinGetState($Gui)
	; 8 - активно
	If BitAnd($iState, 8) Then
		WinSetState($Gui, "", @SW_HIDE); Если активно - спрятать
	Else
		WinActivate($Gui); пассивно - активировать
	EndIf

	; 2 - отображается
	If Not BitAnd($iState, 2) Then WinSetState($Gui, "", @SW_SHOW) ; Если скрыто - отобразить
	; 16 - свернуто
	If BitAnd($iState, 16) Then WinSetState($Gui, "", @SW_RESTORE) ; Если свернуто - восстановить


EndFunc


Func msb($message)
	MsgBox(4096, "", $message)
EndFunc


While 1
	sleep(200)
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Элементы GUI] Определение ошибки в GUIGetMsg()

Dimmak,
А функции где? Выложите рабочий кусок кода.

И причем здесь GUIGetMsg()? ИМХО, название темы надо поменять.
 
Автор
Dimmak

Dimmak

Знающий
Сообщения
185
Репутация
9
Re: [Элементы GUI] Определение ошибки в GUIGetMsg()

madmasles
шапку поправил :ok:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Re: [Элементы GUI] Определение ошибки в GUIGetMsg()

Потому что ты закрываешь окно одним методом, а восстанавливаешь другим.
ВОт так возьми
Код:
Func _Show() ; CTRL +SHIFT +1

    $iState = WinGetState($Gui)
    ; 8 - активно
    If BitAnd($iState, 8) Then
        GUISetState(@SW_HIDE, $Gui); Если активно - спрятать
    Else
        WinActivate($Gui) ; пассивно - активировать
    EndIf

    ; 2 - отображается
    If Not BitAnd($iState, 2) Then GUISetState(@SW_SHOW, $Gui) ; Если скрыто - отобразить
    ; 16 - свернуто
    If BitAnd($iState, 16) Then GUISetState(@SW_RESTORE, $Gui) ; Если свернуто - восстановить

EndFunc
 
Автор
Dimmak

Dimmak

Знающий
Сообщения
185
Репутация
9
Re: [Элементы GUI] Определение ошибки в GUIGetMsg()

C2H5OH спасибо! :beer:
 
Верх