Nathgul |
Отправлено: 06 Сентября, 2018 - 16:03:41
|
Участник
Покинул форум
Сообщений всего: 70
Дата рег-ции: Май 2018
Репутация: 0
|
Владимир, доброго дня. переделал отключение сочетанием клавиш на отключением нажатием кнопки на доп форме... если убираю основной код и оставляю просто петлю пустую после включения второго диалогового окна, форма работает корректно... таймер фиксирует нажатие кнопки и все ок... заменил кольцо на основной код и таймер начал свое снова - срабатывает нажатие без как такового физического нажатия мышкой на кнопку...
CODE:
Z:;
int pos_size_button0[2][4];
string text_button0[2];
int flag_button0[2];
pos_size_button0[0][0]=59; pos_size_button0[0][1]=230; pos_size_button0[0][2]=96; pos_size_button0[0][3]=20;
pos_size_button0[1][0]=163; pos_size_button0[1][1]=230; pos_size_button0[1][2]=97; pos_size_button0[1][3]=20;
text_button0[0]="Пуск"; text_button0[1]="Закрыть";
//////////
int pos_size_edit0[1][4];
string text_edit0[1];
pos_size_edit0[0][0]=196; pos_size_edit0[0][1]=4; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=20;
text_edit0[0]="";
//////////
int pos_size_check0[8][4];
string text_check0[8];
int flag_check0[8];
pos_size_check0[0][0]=14; pos_size_check0[0][1]=129; pos_size_check0[0][2]=60; pos_size_check0[0][3]=20;
pos_size_check0[1][0]=80; pos_size_check0[1][1]=128; pos_size_check0[1][2]=60; pos_size_check0[1][3]=20;
pos_size_check0[2][0]=146; pos_size_check0[2][1]=127; pos_size_check0[2][2]=60; pos_size_check0[2][3]=20;
pos_size_check0[3][0]=145; pos_size_check0[3][1]=159; pos_size_check0[3][2]=83; pos_size_check0[3][3]=20;
pos_size_check0[4][0]=12; pos_size_check0[4][1]=74; pos_size_check0[4][2]=255; pos_size_check0[4][3]=20;
pos_size_check0[5][0]=12; pos_size_check0[5][1]=54; pos_size_check0[5][2]=228; pos_size_check0[5][3]=20;
pos_size_check0[6][0]=14; pos_size_check0[6][1]=196; pos_size_check0[6][2]=114; pos_size_check0[6][3]=20;
pos_size_check0[7][0]=145; pos_size_check0[7][1]=195; pos_size_check0[7][2]=150; pos_size_check0[7][3]=20;
text_check0[0]="F1"; text_check0[1]="F2"; text_check0[2]="F3"; text_check0[3]="Включить"; text_check0[4]="F4"; text_check0[5]="F5"; text_check0[6]="F6"; text_check0[7]="F7";
flag_check0[0]=0; flag_check0[1]=0; flag_check0[2]=0; flag_check0[3]=0; flag_check0[4]=0; flag_check0[5]=0; flag_check0[6]=0; flag_check0[7]=0;
//////////
int pos_size_combo0[1][4];
string text_combo0[1][3];
int strok_combo0[1];
int flag_combo0[1];
pos_size_combo0[0][0]=12; pos_size_combo0[0][1]=30; pos_size_combo0[0][2]=286; pos_size_combo0[0][3]=80;
strok_combo0[0]=3;
text_combo0[0][0]="1"; text_combo0[0][1]="2"; text_combo0[0][2]="3";
flag_combo0[0]=0;
//////////
int pos_size_static0[7][4];
string text_static0[7];
pos_size_static0[0][0]=13; pos_size_static0[0][1]=10; pos_size_static0[0][2]=100; pos_size_static0[0][3]=15;
pos_size_static0[1][0]=154; pos_size_static0[1][1]=10; pos_size_static0[1][2]=40; pos_size_static0[1][3]=15;
pos_size_static0[2][0]=13; pos_size_static0[2][1]=91; pos_size_static0[2][2]=283; pos_size_static0[2][3]=20;
pos_size_static0[3][0]=14; pos_size_static0[3][1]=109; pos_size_static0[3][2]=188; pos_size_static0[3][3]=20;
pos_size_static0[4][0]=16; pos_size_static0[4][1]=142; pos_size_static0[4][2]=281; pos_size_static0[4][3]=20;
pos_size_static0[5][0]=14; pos_size_static0[5][1]=162; pos_size_static0[5][2]=100; pos_size_static0[5][3]=20;
pos_size_static0[6][0]=15; pos_size_static0[6][1]=176; pos_size_static0[6][2]=281; pos_size_static0[6][3]=20;
text_static0[0]="Выберите пункт:"; text_static0[1]="Ваш ID:"; text_static0[2]="__________________________________________________________"; text_static0[3]="Выберите пункт:"; text_static0[4]="___________________________________________________________________________"; text_static0[5]="Выберите пункт"; text_static0[6]="__________________________________________________________________________";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0] |
COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "Dialog", 40, 40, 314, 287, 0, 1);
//////////
int pos_size_button1[1][4];
string text_button1[1];
int flag_button1[1];
pos_size_button1[0][0]=3; pos_size_button1[0][1]=5; pos_size_button1[0][2]=123; pos_size_button1[0][3]=37;
text_button1[0]="Остановить";
//////////
createdialog(1, BUTTON, #pos_size_button1[0][0], #text_button1[0], #flag_button1[0]);
//////////
external(INT, "EnableWindow", "EnableWindow", "user32.dll");
text_edit0[0]=individualcode();
EnableWindow(formatwi(window ("F4", "Button", -1)), 0);
EnableWindow(formatwi(window ("F5", "Button", -1)), 0);
EnableWindow(formatwi(window ("F6", "Button", -1)), 0);
knopka();
m_KIB2: /// петля в виде зацикленных друг на друга блоках кода
sleep(1000);
goto m_KIB2;
function knopka()
{
loop()
{
if (flag_combo0[0]==1)
{
flag_check0[5]=0;
EnableWindow(formatwi(window ("F4", "Button", -1)), 1);
EnableWindow(formatwi(window ("F5", "Button", -1)), 0);
}
if (flag_combo0[0]==2)
{
flag_check0[4]=0;
EnableWindow(formatwi(window ("F4", "Button", -1)), 0);
EnableWindow(formatwi(window ("F5", "Button", -1)), 1);
}
if(flag_combo0[0]==0)
{
flag_check0[4]=0;
flag_check0[5]=0;
EnableWindow(formatwi(window ("F4", "Button", -1)), 0);
EnableWindow(formatwi(window ("F5", "Button", -1)), 0);
}
if(flag_check0[6]==1)
{
EnableWindow(formatwi(window ("F7", "Button", -1)), 1);
}
else
{
flag_check0[7]=0;
EnableWindow(formatwi(window ("F7", "Button", -1)), 0);
}
if(flag_button0[1]==1)
{
close();
}
if(flag_button0[0]==1)
{
hidedialog(0);
showdialog(1, "Dialog", 30, 30, 135, 77, 0, 1);
enabletimer(2);
break;
}
sleep(10);
}
}
CREATE_TIMER(2, 50)
{
if(flag_button1[0]==1)
{
destroydialog(0);
destroydialog(1);
goto Z;
}
}
в таком виде работает без сбоев... стоит заменить петлю на скрипт основной... начинаются срабатывания таймера 2... как в собранном файле так и при запуске из кибора
че может быть?
(Добавление)
попробую проверить основной код от выхода из функции "knopka" до конца скрипта... хотя сомневаюсь что там может быть что-то нажимающее кнопку или вызывающее таймер2... вызов таймера только в 1 месте... и оно в коде выше есть |
|
|
Zireael |
Отправлено: 07 Сентября, 2018 - 01:48:28
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: начинаются срабатывания таймера 2
А почему не должен срабатывать, таймер нигде не выключается.
Цитата: без как такового физического нажатия мышкой на кнопку...
Флаг нажатия кнопки надо обнулять.
Цитата: if(flag_button0[0]==1)
{
flag_button0[0]=0;
hidedialog(0);
showdialog(1, "Dialog", 30, 30, 135, 77, 0, 1 );
enabletimer(2);
break;
} |
|
|
Nathgul |
Отправлено: 07 Сентября, 2018 - 05:54:20
|
Участник
Покинул форум
Сообщений всего: 70
Дата рег-ции: Май 2018
Репутация: 0
|
блин ток вчитался... ты пишешь что флаг обнулять надо... только кнопка0(0) нажимается единожды и мы выходим из цикла loop навсегда... дальше форма1 не используется, начинает использоваться форма 2 с одной единственной кнопкой проверка нажатия которой заложена в таймере2 и который работает на протяжении работы всего скрипта... так вот как раз иногда по необьяснимым причинам условие кнопка1(0)==1 и срабатывает, только кнопка при этом физически не нажата на форме, такая же бадяга была и с сочетанием клавиш любым.
я думаю может быть так можно проблему решить
CODE:
if(flag_button0[0]==1)
{
hidedialog(0);
showdialog(1, "Dialog", 30, 30, 135, 77, 0, 1);
flag_button1[0]=1; /// обнулить кнопку со второй формы перед запуском таймера
enabletimer(2);
break;
}
sleep(10);
}
обнуление в блоке таймера нет конечно, иначе кнопка всегда будет в флаге 0(Отредактировано автором: 07 Сентября, 2018 - 06:13:25) |
|
|
|