Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Без описания
Nikanr
Отправлено: 17 Августа, 2019 - 19:18:10
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019  
Репутация: 5




При нажатии кнопки вызываются функция, где есть некие инструкции которые необходимо зациклить. Но если мы вызываем эту функцию, и пытаемся вызвать второй диалог или messagebox, он не вызывается

Код:

CODE:
int pos_size_button0[3][4];
string text_button0[3];
int flag_button0[3];

pos_size_button0[0][0]=66; pos_size_button0[0][1]=116; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
pos_size_button0[1][0]=100; pos_size_button0[1][1]=156; pos_size_button0[1][2]=100; pos_size_button0[1][3]=20;
pos_size_button0[2][0]=12; pos_size_button0[2][1]=12; pos_size_button0[2][2]=150; pos_size_button0[2][3]=20;
text_button0[0]="Вызвать диалог"; text_button0[1]="Вызвать цикл"; text_button0[2]="Вызвать messagebox";

int pos_size_edit0[1][4];
string text_edit0[1];
pos_size_edit0[0][0]=69; pos_size_edit0[0][1]=98; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=20;
text_edit0[0]="Поле 0";

enabletimer(0);

createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);
showdialog(0, "Диалог", 835, 390, 250, 300, 1, 1);

loop() pause(100);

CREATE_TIMER(0,50){
if(flag_button0[0]>0){
flag_button0[0]=0;
createdialog(1, EDIT, #pos_size_edit0[0][0], #text_edit0[0]);showdialog(1, "Диалог", 835, 390, 250, 300, 0, 1);
}
if(flag_button0[1]>0){
flag_button0[1]=0;
ale();
}
if(flag_button0[2]>0){
flag_button0[2]=0;
messagebox(text_edit0[0]);
}
}


function ale(){
w:
pause(1000);
//что то что надо зациклить
goto w;
}


Если использовать getmessage, то проблемы не наблюдается

CODE:

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );

int b1,b2,b3;
int pos_size_edit0[1][4];
string text_edit0[1];
pos_size_edit0[0][0]=69; pos_size_edit0[0][1]=98; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=20;
text_edit0[0]="Поле 0";
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);


function getmessage(0, WM_CREATE)//Создаем контролы при создание окна
{
b1=CreateWindow(0, "BUTTON", "Вызвать цикл", 1342177280, 10, 10, 120, 30, gethwnd(0), 0, 0, 0);
b2=CreateWindow(0, "BUTTON", "Диалог", 1342177280, 10, 50, 120, 30, gethwnd(0), 0, 0, 0);
b3=CreateWindow(0, "BUTTON", "вызвать меседж бокс", 1342177280, 10, 100, 150, 30, gethwnd(0), 0, 0, 0);
}

function getmessage(0, WM_COMMAND)
{
if (message.lparam==b1)arena();
if (message.lparam==b2){createdialog(1, EDIT, #pos_size_edit0[0][0], #text_edit0[0]);showdialog(1, "Диалог", 835, 390, 250, 300, 0, 1);}
if (message.lparam==b3){messagebox(text_edit0[0]);}
}

loop()pause(100);

function arena(){
p:
pause(100);
//что то что надо зациклить
goto p;
}



Так и должно быть или я что-то делаю не так?
 
 Top
Zireael
Отправлено: 17 Августа, 2019 - 19:28:36
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Так и должно быть

Да. Потому что функция была вызвана из таймера, чтобы таймер продолжил работать надо вернуться из функции в таймер.
 
 Top
Nikanr
Отправлено: 17 Августа, 2019 - 19:29:35
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019  
Репутация: 5




 Zireael пишет:
Да. Потому что функция была вызвана из таймера, чтобы таймер продолжил работать надо вернуться из функции в таймер.
Понял, спасибо
 
 Top
Kibor
Отправлено: 17 Августа, 2019 - 19:29:49
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 Zireael пишет:
Да. Потому что функция была вызвана из таймера, чтобы таймер продолжил работать надо вернуться из функции в таймер.

))))))
Я уже тестирую и удивляюсь. На это не обратил внимания))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by