Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 5.50 Получение и обработка сообщений в немодальных окнах Кибор

Страниц (16): В начало « ... 8 9 10 11 [12] 13 14 15 16 »
 

111. Zireael - 12 Августа, 2019 - 17:44:37 - перейти к сообщению
 Цитата:
edit1=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 100, 21, gethwnd(0), 0, 0, 0);
Есть ли возможность писать длинный текст в данном EDIT?

CODE:
#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define ES_AUTOHSCROLL 128
#define ES_AUTOVSCROLL 64
#define ES_MULTILINE 4
#define ES_WANTRETURN 4096
#define WS_VSCROLL 2097152
#define WS_HSCROLL 1048576
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );

int edit;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);

loop()sleep(10);

function getmessage(0, WM_CREATE)
{
edit=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER | WS_VSCROLL | WS_HSCROLL |
ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_MULTILINE | ES_WANTRETURN, 10, 10, 150, 120, gethwnd(0), 0, 0, 0);
}

Не нужные флаги можно убрать.
112. Budni - 13 Августа, 2019 - 04:52:04 - перейти к сообщению
В чем ошибка? Как сделать когда галочку снимаешь исполнялся код после else

CODE:
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define BS_AUTOCHECKBOX 3


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

int b[5];
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);


win w=window (-1, "MozillaWindowClass", -1);
loop()sleep(1);




function getmessage(0, WM_COMMAND)
{
if (message.lparam==b[0])messagebox ("кнопка");
if (message.lparam==b[1]) {transparency (-1, w);}
else transparency (100, w);

}

function getmessage(0, WM_CREATE)
{
b[0]=CreateWindow(0, "BUTTON", "Кнопка", WS_VISIBLE | WS_CHILD, 10, 10, 120, 30, gethwnd(0), 0, 0, 0);
b[1]=CreateWindow(0, "BUTTON", "Галка", WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, 10, 50, 120, 30, gethwnd(0), 0, 0, 0);
}
113. Kibor - 13 Августа, 2019 - 05:04:01 - перейти к сообщению
 Budni пишет:
Как сделать когда галочку снимаешь исполнялся код после else


CODE:
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define BS_AUTOCHECKBOX 3


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

int b[5];
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);

int flag=0;
win w=window (-1, "MozillaWindowClass", -1);
loop()sleep(1);




function getmessage(0, WM_COMMAND)
{
if (message.lparam==b[0])messagebox ("кнопка");

if (message.lparam==b[1])
{
if(flag){flag=0; transparency (100, w);}
else {flag=1; transparency (-1, w);}
}

}

function getmessage(0, WM_CREATE)
{
b[0]=CreateWindow(0, "BUTTON", "Кнопка", WS_VISIBLE | WS_CHILD, 10, 10, 120, 30, gethwnd(0), 0, 0, 0);
b[1]=CreateWindow(0, "BUTTON", "Галка", WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, 10, 50, 120, 30, gethwnd(0), 0, 0, 0);
}
114. ivantu - 25 Сентября, 2019 - 01:40:04 - перейти к сообщению
Друзья, подскажите пожалуйста как можно обрабатывать сообщения от окон, игнорируя паузы в скрипте, просто по логике в программе есть паузы от 1сек - 3 , и зачастую от этих пауз страдает визуальная составляющая, т.к. диалог начинает выжидать, а затем обрабатывать команды, вот пример:

CODE:

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

int btn;
createdialog(0);
showdialog(0, "Диалог",150, 200, 400, 300, 1, 0);

loop()pause(5000);

function getmessage (0, WM_CREATE)
{
btn=CreateWindow(0, "BUTTON", "Первая кнопка", 1342177280, 10, 10, 120, 30, gethwnd(0), 0, 0, 0);

}

function getmessage(0, WM_COMMAND)
{
if (message.lparam==btn)messagebox ("Первая кнопка");

}
115. Dantes3000 - 25 Сентября, 2019 - 02:11:17 - перейти к сообщению
ivantu ,

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

int btn;
createdialog(0);
showdialog(0, "Диалог",150, 200, 400, 300, 1, 0);

loop() pause_(5000);

function getmessage (0, WM_CREATE)
{
btn=CreateWindow(0, "BUTTON", "Первая кнопка", 1342177280, 10, 10, 120, 30, gethwnd(0), 0, 0, 0);
}

function getmessage(0, WM_COMMAND)
{
if (message.lparam==btn)messagebox ("Первая кнопка");

}


function pause_(int s)
{
looptime(s) sleep(100);
}
116. ivantu - 25 Сентября, 2019 - 02:28:04 - перейти к сообщению
Dantes3000 принципиально не использую sleep в коде, от него Диалог дергается при перемещении... вот и получается замкнутый круг, как всегда все бы вроде хорошо, бац... какая то фигня вылазит.
(Добавление)
Сорян, все работает, Спасибо, извиняюсь.

Код (Отобразить)
117. Dantes3000 - 25 Сентября, 2019 - 02:38:59 - перейти к сообщению
ivantu , так без проблем...
Спойлер (Отобразить)
118. ivantu - 25 Сентября, 2019 - 02:41:57 - перейти к сообщению
Значит loop() работает типо как в отдельном потоке ?
И еще вопрос, не могу сообразить как random паузу сделать по такому же принципу
119. Dantes3000 - 25 Сентября, 2019 - 02:46:31 - перейти к сообщению
ivantu , я был уверен, что pause отличается от sleep тем, что это такой же sleep, только разбитый на мелкие промежутки.

sleep полностью останавливает работу Кибора и не дает выполняться таймерам и getmessage. По идее с pause они должны работать, но нет.
Поэтому looptime(5000) sleep(100); это пауза в 5 секунд, но каждые 100мсек Кибор просыпается и выполняет таймеры и getmessage
(Добавление)
 ivantu пишет:
И еще вопрос, не могу сообразить как random паузу сделать по такому же принципу


pause_(rand(1000, 5000)); //пауза от 1 до 5 сек
120. ivantu - 25 Сентября, 2019 - 02:51:18 - перейти к сообщению
 Dantes3000 пишет:
pause_(rand(1000, 5000)); //пауза от 1 до 5 сек

Благодарю

Powered by ExBB FM 1.0 Final