Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Вызов второго диалога во время выполнения цикла в функции

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

1. Nikanr - 17 Августа, 2019 - 11:18:10 - перейти к сообщению
При нажатии кнопки вызываются функция, где есть некие инструкции которые необходимо зациклить. Но если мы вызываем эту функцию, и пытаемся вызвать второй диалог или 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;
}



Так и должно быть или я что-то делаю не так?
2. Zireael - 17 Августа, 2019 - 11:28:36 - перейти к сообщению
 Цитата:
Так и должно быть

Да. Потому что функция была вызвана из таймера, чтобы таймер продолжил работать надо вернуться из функции в таймер.
3. Nikanr - 17 Августа, 2019 - 11:29:35 - перейти к сообщению
 Zireael пишет:
Да. Потому что функция была вызвана из таймера, чтобы таймер продолжил работать надо вернуться из функции в таймер.
Понял, спасибо
4. Kibor - 17 Августа, 2019 - 11:29:49 - перейти к сообщению
 Zireael пишет:
Да. Потому что функция была вызвана из таймера, чтобы таймер продолжил работать надо вернуться из функции в таймер.

))))))
Я уже тестирую и удивляюсь. На это не обратил внимания))

Powered by ExBB FM 1.0 Final