Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сделать рандомное время срабатывания таймера,
CODE:CREATE_TIMER(0, 100)
{
sendtimer(0, rand(300, 4000)); // установить время срабатывания таймера от 300 до 3999 мсек
}
Цитата: и отдельно как прикрутить к другому таймеру ползунок настройки времени, и вставить его в модальное окно?
Скролл, меняющий время срабатывания таймера (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define SB_LINELEFT 0
#define SB_LINERIGHT 1
#define SB_THUMBTRACK 5
#define SB_CTL 2
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetScrollRange", "SetScrollRange", "User32.dll" );
external(INT, "SetScrollPos", "SetScrollPos", "User32.dll" );
int scroll;
int min=20, max=1000, pos=200; // время для срабатывания таймера (минимум, максимум и начальное время)
int step=20; // шаг, на сколько уменьшить/увеличить время таймера при нажатии на стрелку скролла
createdialog(0);
showdialog(0, "Диалог",300, 300, 300, 300, 1, 1);
SetScrollRange(scroll, SB_CTL, min, max,1);
SetScrollPos(scroll, SB_CTL, pos,1);
set_timer();
int X=0;
enabletimer(0);
textbkcolor(255, 65280);
loop()
{
textout(0, 320, 400, "Переменная X = "+format(X), 1);
textout(1, 320, 420, "Время срабатывания таймера: "+format(pos)+" мсек", 1);
sleep(1);
}
function set_timer()
{
sendtimer(0, pos);
}
function getmessage(0, WM_HSCROLL)
{
if (message.lparam==scroll)
{
if (message.wparam==SB_LINERIGHT)
{
pos=pos+step;
if (pos>max)pos=max;
SetScrollPos(scroll, SB_CTL, pos, 1);
set_timer();
return;
}
if (message.wparam==SB_LINELEFT)
{
pos=pos-step;
if (pos<min)pos=min;
SetScrollPos(scroll, SB_CTL, pos, 1);
set_timer();
return;
}
if (loword(message.wparam)==SB_THUMBTRACK)
{
pos=pos-(pos-hiword(message.wparam));
if (pos>max)pos=max;
if (pos<min)pos=min;
SetScrollPos(scroll, SB_CTL, pos, 1);
set_timer();
}
}
}
function getmessage(0, WM_CREATE)
{
scroll=CreateWindow(0, "scrollbar", 0, WS_CHILD | WS_VISIBLE, 10, 10, 200, 20, gethwnd(0), 0, 0, 0);
}
CREATE_TIMER(0, 1000)
{
X++;
} |