Что нового

[Элементы GUI] Не с первого раза нажимаются кнопки в GUI

maks.plotnikoff

Новичок
Сообщения
6
Репутация
0
Буквально 2 дня назад установил себе AutoIt, т.к. требовалось для учебы.
Проблема вот в чем: при открытии второго окна, кнопки, которые там находятся нажимаются не с первого раза (иногда раз по 10 приходится кликать). Где ошибка, подскажите пожалуйста начинающему) :'(
Вот код, который я написал:
Код:
#include <GUIConstantsEx.au3>
#include <Constants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
coffee()

Func coffee()

Local $Button_1, $Button_2, $Button_3, $Button_4, $Button_5, $msg, $font, $msg1, $msg2, $msg3, $msg4; Создание переменных

$font = "Palatino Linotype"

GUICreate("Кофемашина", 700, 500, -1, -1); Создание окна

GUICtrlCreateLabel("Здравствуйте, пожалуйста выберите интересующий Вас напиток.", 10, 10, 700, 50); Создание текста в окне
GUICtrlSetFont(-1, 16, 400, 0, $font); Изменение шрифта

$Button_1 = GUICtrlCreateButton("Капучино", 200, 50, 110, 50); Создание кнопки с надписью внутри
GUICtrlSetFont(-1, 16, 400, 0, $font)


GUISetState(); Показывает окно

Do
$msg = GUIGetMsg()
Select
Case $msg = $Button_1 
                GUICreate("Выберите количество сахара", 300, 470, -1, -1); 

		$Button_2 = GUICtrlCreateButton("", 50, 20, 200, 100, $BS_PUSHLIKE + $BS_BITMAP)
		GUICtrlSetImage(-1, "oiuytrew1.bmp")

		$Button_3 = GUICtrlCreateButton("", 50, 120, 200, 100, $BS_PUSHLIKE + $BS_BITMAP)
		GUICtrlSetImage(-1, "oiuytrew2.bmp")

		$Button_4 = GUICtrlCreateButton("", 50, 220, 200, 100, $BS_PUSHLIKE + $BS_BITMAP)
		GUICtrlSetImage(-1, "oiuytrew3.bmp")

		$Button_5 = GUICtrlCreateButton("", 50, 320, 200, 100, $BS_PUSHLIKE + $BS_BITMAP)
		GUICtrlSetImage(-1, "oiuytrew3.bmp")
GUISetState(); Показывает окно
		
Do 
$msg1 = GUIGetMsg()
$msg2 = GUIGetMsg()
$msg3 = GUIGetMsg()
$msg4 = GUIGetMsg()
Select
    Case $msg1 = $Button_2
        GUICreate("123", 300, 430, -1, -1); 
GUISetState(); Показывает окно

    Case $msg2 = $Button_3 
                GUICreate("1234", 300, 430, -1, -1); 
GUISetState(); Показывает окно

    Case $msg3 = $Button_4
        GUICreate("12345", 300, 430, -1, -1); 
GUISetState(); Показывает окно

    Case $msg4 = $Button_5 
                GUICreate("123456", 300, 430, -1, -1); 
EndSelect
Until 0
EndSelect
Until 0
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
maks.plotnikoff [?]
Где ошибка, подскажите
Когда вы обрабатываете сообщения от элементов - нужно один раз вызвать GUIGetMsg() и далее смотреть от какого элемента пришло сообщение. Таким образом, второй цикл будет выглядеть так
Код:
...
Do
  $msg = GUIGetMsg()
  Select
    Case $msg = $Button_2
      GUICreate("123", 300, 430, -1, -1);
      GUISetState(); Показывает окно

    Case $msg = $Button_3
      GUICreate("1234", 300, 430, -1, -1);
      GUISetState(); Показывает окно

    Case $msg = $Button_4
      GUICreate("12345", 300, 430, -1, -1);
      GUISetState(); Показывает окно

    Case $msg = $Button_5
      GUICreate("123456", 300, 430, -1, -1);
  EndSelect
Until 0
...
 
Автор
M

maks.plotnikoff

Новичок
Сообщения
6
Репутация
0
Спасибо большое InnI, всё заработало :laugh: :laugh: :laugh:
 
Верх