Что нового

Перестает работать функция созадния окна GUI , при многократном ее вызове

mmsgeorge

Новичок
Сообщения
96
Репутация
0
Здравствуйте! Такая ситуация, что у меня есть картинка к ней применен режим
Код:
GUICtrlSetOnEvent($fotka, "click_left")
, если нажать по ней, сработает функция, откроется другое окно GUI.
Но если нажать многократно, то есть в секунду много раз, то ничего не происходит и вообще перестает отвечать на нажатия. :stars:
К сожалению код очень большой и нет возможности его показать(или сделать похожий). Подскажите пожалуйста теорией , в чем может быть причина?!
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
Re: Перестает работать режим нажатия левой к мыши если нажать многократно по обьекту

пробовал добавлять в запуск функции проверку через
Код:
WinActive
, но все равно блочится при частом нажатии.

Вот функция вызова окна
Код:
If $vrem_time < 3  Then
			$okno_vibranno = GUIGetCursorInfo($GL_dobavit_novost)
			$vremenie_GUI = WinGetPos($GL_dobavit_novost)
			If $Objekt_massiv.Exists($okno_vibranno[4]) Then
				If WinActive($OKNO_Prosmotr_kartinki) Then

					GUICtrlSetData($Edit_dobavlenie_novostei_Tema, $ss)
					$OKNO_Prosmotr_kartinki = GUICreate("title", $Razmer_okna_GUI_shirina, $Razmer_okna_GUI_visota, $vremenie_GUI[0], $vremenie_GUI[1], $WS_CLIPCHILDREN + $WS_CLIPSIBLINGS, $WS_EX_TOPMOST)
					$vremenni_put = $Objekt_massiv.Item($okno_vibranno[4])
					$vremenay_fotka = GUICtrlCreatePic($vremenni_put, 0, 0, $Razmer_okna_GUI_shirina, $Razmer_okna_GUI_visota)
					GUICtrlSetOnEvent($vremenay_fotka, "exit_prosmotr")
					GUICtrlSetCursor($vremenay_fotka, 0)
					GUISetState()
					;GUISwitch($OKNO_Prosmotr_kartinki)
				EndIf
			EndIf
		EndIf
Если добавить
Код:
WinActive($OKNO_Prosmotr_kartinki) Then
то опять вызов блокируется. а если не добавлять проверку окна, то за раз может открыть не 1 окно, и одно из них уже не закрыть... я забыл сказать, что то , окно , которое появляется, если на него нажать, закроется
Код:
Func exit_prosmotr()
	Sleep(500)
	GUIDelete($OKNO_Prosmotr_kartinki)
	GUISwitch($GL_dobavit_novost)
	;$ss = 0
EndFunc   ;==>exit_prosmotr



Добавлено:
Сообщение автоматически объединено:

Решил проблему опять костылем - добавил свою проверку окна
if $okno=0
$okno=1
и убрал проверку окна
Код:
If WinActive($OKNO_Prosmotr_kartinki) Then

Код:
if $okno=0 then
$okno=1
 If $vrem_time < 3  Then
            $okno_vibranno = GUIGetCursorInfo($GL_dobavit_novost)
            $vremenie_GUI = WinGetPos($GL_dobavit_novost)
            If $Objekt_massiv.Exists($okno_vibranno[4]) Then
                

                    GUICtrlSetData($Edit_dobavlenie_novostei_Tema, $ss)
                    $OKNO_Prosmotr_kartinki = GUICreate("title", $Razmer_okna_GUI_shirina, $Razmer_okna_GUI_visota, $vremenie_GUI[0], $vremenie_GUI[1], $WS_CLIPCHILDREN + $WS_CLIPSIBLINGS, $WS_EX_TOPMOST)
                    $vremenni_put = $Objekt_massiv.Item($okno_vibranno[4])
                    $vremenay_fotka = GUICtrlCreatePic($vremenni_put, 0, 0, $Razmer_okna_GUI_shirina, $Razmer_okna_GUI_visota)
                    GUICtrlSetOnEvent($vremenay_fotka, "exit_prosmotr")
                    GUICtrlSetCursor($vremenay_fotka, 0)
                    GUISetState()
                    ;GUISwitch($OKNO_Prosmotr_kartinki)
               
            EndIf
        EndIf
 EndIf

а в функцию закрытия добавил $okno=0
Код:
Func exit_prosmotr()
	Sleep(500)
	GUIDelete($OKNO_Prosmotr_kartinki)
	GUISwitch($GL_dobavit_novost)
	$okno= 0
EndFunc   ;==>exit_prosmotr


Добавлено:
Сообщение автоматически объединено:

Подскажите пожалуйста, а нету ли вообще функции, которая разрешала бы открывать окно 1 раз , не через проверку? Знаю есть такая для всего скрипта, а для окна GUI?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: Перестает работать режим нажатия левой к мыши если нажать многократно по обьекту

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Перестает работать режим нажатия левой к мыши если нажать многократно по обьекту" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.
 
Верх