007wan |
Отправлено: 19 Марта, 2019 - 15:30:13
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Я не понимаю как мне создать лог событий, когда бот что-то делает. Я посчитал, что добавлять текст в эдит можно из файла, но тогда придется выполнять операции по записи в файл текста, а это лишний гемор. Как мне проще сделать, я не знаю функцию, что бы перенести текст в эдит с на новую строку или даже не заметиь, а добавить, я хз. Хочу что бы было проще, а не геморно |
|
|
Zireael |
Отправлено: 20 Марта, 2019 - 02:02:22
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как мне создать лог событий
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define WS_VSCROLL 2097152
#define LBS_EXTENDEDSEL 2048
#define LB_ADDSTRING 384
#define LB_GETCOUNT 395
#define LB_SETTOPINDEX 407
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int list1;
createdialog(2);
showdialog(2, "LOG", 100, 100, 330, 300, 1, 1);
int X=0;
loop()
{
add_list("Переменная X равна "+format(X));
sleep(100);
X++;
}
function getmessage(2, WM_CREATE)
{
list1=CreateWindow(0, "LISTBOX", "", WS_BORDER | WS_VSCROLL | WS_CHILD | WS_VISIBLE | LBS_EXTENDEDSEL , 10, 10, 300, 250, gethwnd(2), 0, 0, 0);
}
function add_list(string s)
{
new char c[size(s)+1];
strcpy(#c[0], s);
sendmessage(LB_ADDSTRING, 0, address(#c[0]), formatiw(list1)); // добавить строку в список
sendmessage(LB_SETTOPINDEX, sendmessage(LB_GETCOUNT, 0, 0, formatiw(list1))-1, 0, formatiw(list1)); // скролл
delete c;
} |
|
|
007wan |
Отправлено: 20 Марта, 2019 - 18:31:45
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Не удается сделать горизонтальный скроллер.
CODE:#define WS_HSCROLL 1048576
...
list1=CreateWindow(0, "LISTBOX", "", WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_CHILD | WS_VISIBLE | LBS_EXTENDEDSEL , 10, 10, 300, 250, gethwnd(2), 0, 0, 0);
...
(Добавление)
CODE:add_list("Переменная Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx равна "+format(X));
|
|
|
Zireael |
Отправлено: 21 Марта, 2019 - 01:17:06
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
LOG (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define WS_VSCROLL 2097152
#define WS_SIZEBOX 262144
#define WS_SYSMENU 524288
#define WS_MINIMIZEBOX 131072
#define WS_MAXIMIZEBOX 65536
#define LBS_EXTENDEDSEL 2048
#define LB_ADDSTRING 384
#define LB_GETCOUNT 395
#define LB_SETTOPINDEX 407
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
win log;
int list1;
int X=0;
loop()
{
add_list("Переменная Xxxxxxxxxxxxxxxxxxxxxxxx равна "+format(X));
sleep(1);
X++;
}
function add_list(string s)
{
if(window("LOG")==0)
list1=CreateWindow(0, "LISTBOX", "LOG", WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU | WS_SIZEBOX | WS_BORDER | WS_VSCROLL | WS_VISIBLE | LBS_EXTENDEDSEL , 100, 100, 400, 300, 0, 0, 0, 0);
else
{
log=window("LOG");
list1=formatwi(log);
}
new char c[size(s)+1];
strcpy(#c[0], s);
sendmessage(LB_ADDSTRING, 0, address(#c[0]), formatiw(list1)); // добавить строку в список
sendmessage(LB_SETTOPINDEX, sendmessage(LB_GETCOUNT, 0, 0, formatiw(list1))-1, 0, formatiw(list1)); // скролл
delete c;
}
Окно LOG можно растягивать.
Остановка скрипта не приведёт к закрытию окна LOG.
Если окно LOG закрыто, оно будет открыто снова при добавлении строки.(Отредактировано автором: 21 Марта, 2019 - 01:21:48) |
|
|
|