007wan |
Отправлено: 22 Сентября, 2019 - 08:33:24
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: static=CreateWindow(0, "STATIC", "Статик", WS_BORDER | WS_CHILD | WS_VISIBLE, 20, 20, 60, 20, gethwnd(0), 0, 0, 0); // текст ivantu , минус на минус дает плюс)))
(Добавление)
Потому что этот стиль уже стоит)))
(Добавление)
Тоесть я понимаю это так(принцип как у нажатии кнопки):
При создании этот стиль стоит(кнопка нажата, т.е стиль поставлен, тогда раз стиль стоит, значит имеет знак "минус"(убрать).)
А тут мы его добавлям "минус", а когда минус на плюс, дает "плюс", т.е он добавлен, а после добавления...Короче я запарился, тоже не понимаю)
(Добавление)
Zireael пишет: Изменить стиль окна (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define GWL_STYLE -16
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
int static;
int style;
createdialog(0);
showdialog(0, "Диалог", 300, 300, 200, 200, 1, 1);
loop()
{
SetWindowLong(static, GWL_STYLE, GetWindowLong(static, GWL_STYLE) + WS_BORDER); // убрать рамку
update(formatiw(gethwnd(0)));
sleep(500);
SetWindowLong(static, GWL_STYLE, GetWindowLong(static, GWL_STYLE) - WS_BORDER); // добавить рамку
update(formatiw(gethwnd(0)));
sleep(500);
}
function getmessage(0, WM_CREATE)
{
static=CreateWindow(0, "STATIC", "Статик", WS_BORDER | WS_CHILD | WS_VISIBLE, 20, 20, 60, 20, gethwnd(0), 0, 0, 0); // текст
} Я уже так обрадовался. Почему нельзя так?
Показывает пустой контрол.
Код (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define GWL_STYLE -16
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
int static;
int style;
createdialog(0);
showdialog(0, "Диалог", 300, 300, 200, 200, 1, 1);
loop()
{
/*
SetWindowLong(static, GWL_STYLE, GetWindowLong(static, GWL_STYLE) + WS_BORDER); // убрать рамку
update(formatiw(gethwnd(0)));
sleep(500);
SetWindowLong(static, GWL_STYLE, GetWindowLong(static, GWL_STYLE) - WS_BORDER); // добавить рамку
update(formatiw(gethwnd(0)));
sleep(500);
*/
sleep(10);
}
function getmessage(0, WM_CREATE)
{
static=CreateWindow(0, "STATIC", "Статик", WS_CHILD | WS_VISIBLE, 20, 20, 60, 20, gethwnd(0), 0, 0, 0); // текст
SetWindowLong(static, GWL_STYLE, GetWindowLong(static, GWL_STYLE) - WS_BORDER); // добавить рамку
update(formatiw(gethwnd(0)));
}
(Добавление)
Я конечно всё понимаю. Ведь мы изначально даём этот стиль, что бы потом щёлкать как SW_SHOW & SW_HIDE
(Добавление)
Zireael пишет: Цитата: добавить строки столбцы в листвиев
ListView (Отобразить)CODE:#define GWL_HINSTANCE -6
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define LVM_INSERTCOLUMN 4193
#define LVM_INSERTITEM 4173
#define LVM_SETITEM 4172
#define LVCF_FMT 1
#define LVCF_WIDTH 2
#define LVCF_TEXT 4
#define LVCF_SUBITEM 8
#define LVCFMT_LEFT 0
#define LVS_REPORT 1
#define LVIF_TEXT 1
#define CP_ACP 0
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
int histance, listview;
createdialog(0);
showdialog(0, "Dialog", 300, 300, 600, 500, 1, 1);
loop()sleep(100);
function getmessage(0, WM_CREATE)
{
histance=GetWindowLong(gethwnd(0), GWL_HINSTANCE);
listview=CreateWindow(0, "SysListView32", "", LVS_REPORT | WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 300, 200, gethwnd(0), 0, histance, 0, 0);
// добавить столбцы в список
add_column(listview, 2, "Столбец3", 100); // хендл ListView, индекс столбца, текст столбца, ширина столбца
add_column(listview, 1, "Столбец2", 100);
add_column(listview, 0, "Столбец1", 100);
// добавить строки в список
add_item(listview, "Строка3"); // хендл ListView, текст строки
add_item(listview, "Строка2");
add_item(listview, "Строка1");
// добавить подстроки в список
add_subitem(listview, 1, 0, "Подстрока1"); // хендл ListView, индекс столбца, номер строки, текст подстроки
add_subitem(listview, 2, 0, "Подстрока2");
add_subitem(listview, 1, 1, "Подстрока3");
add_subitem(listview, 2, 1, "Подстрока4");
add_subitem(listview, 1, 2, "Подстрока5");
add_subitem(listview, 2, 2, "Подстрока6");
}
function add_column(int handle_list, int num_column, string text_column, int width_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVCOLUMN[11];
initialarray(#LVCOLUMN[0], 0);
LVCOLUMN[0]=LVCF_FMT + LVCF_WIDTH + LVCF_TEXT + LVCF_SUBITEM;
LVCOLUMN[1]=LVCFMT_LEFT;
LVCOLUMN[2]=width_column;
LVCOLUMN[3]=address(#text_list[0]);
LVCOLUMN[5]=num_column;
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_INSERTCOLUMN, 0, address(#LVCOLUMN[0]), formatiw(handle_list));
}
function add_item(int handle_list, string text_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVITEM[15];
initialarray(#LVITEM[0], 0);
LVITEM[0]=LVIF_TEXT;
LVITEM[5]=address(#text_list[0]);
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_INSERTITEM, 0, address(#LVITEM[0]), formatiw(handle_list));
}
function add_subitem(int handle_list, int num_column, int num_string, string text_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVITEM[15];
initialarray(#LVITEM[0], 0);
LVITEM[0]=LVIF_TEXT;
LVITEM[1]=num_string;
LVITEM[2]=num_column;
LVITEM[5]=address(#text_list[0]);
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_SETITEM, 0, address(#LVITEM[0]), formatiw(handle_list));
}
function ansi_unicode(string S, char #cc, int size_cc)
{
int count=MultiByteToWideChar(1251, CP_ACP, S, size(S), address(#cc[0]), size_cc);
cc[count*2]=0; cc[count*2+1]=0;
} Где ты находишь стили ListView? Здесь не обнаружил все нужные http
и #define "название константы" 0 Не помогает
(Добавление)
ОЙ, константы
(Добавление)
Не могу создать Three View. Не находятся константы. Искал минут 10, открывал каждую страницу.
Нашел только стили и всё, а для SendMessage не нахожу.
ThreeVIew (Отобразить)CODE:#definefile "C:\Users\Home\Desktop\ÌΨ\Kibor\Constants.txt";
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
int histance, progress_bar1, progress_bar2, progress_bar3, progress_bar4, progress_bar5;
createdialog(0);
showdialog(0, "Dialog", 300, 300, 400, 500, 1, 1);
loop()
{
sleep(10);
}
function getmessage(0, WM_CREATE)
{
histance=GetWindowLong(gethwnd(0), GWL_HINSTANCE);
progress_bar5=CreateWindow(0, "SysTreeView32", "", WS_VISIBLE | WS_CHILD, 10, 10, 310, 100, gethwnd(0), 0, histance, 0, 0);
}
Constants.txt [334]
(Добавление)
Осторожно, забыл в конце файла у последних констант удалить $ |
|
|
Zireael |
Отправлено: 22 Сентября, 2019 - 10:16:47
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Почему нельзя так?
Без понятия. Лучше сначала указать нужные стили, потом тут же можно их убрать. После этого будет нормально менять их.
Цитата: Где ты находишь стили
В Visual Studio.
|
|
|
007wan |
Отправлено: 22 Сентября, 2019 - 10:33:23
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Zireael пишет: В Visual Studio. Ну блин. Нечестно. У меня новая не ставится, наверное из-за требований к установке, а в старой такого не видал, что при наведении дает константу.
(Добавление)
Zireael пишет: Нажмите для увеличения
А что если откуда берутся эти константы в VSC++ новой, то можно этот файл открыть, скопировать, а я потом обработаю все в ручную.
(Добавление)
Можно еще Tooltip и ThreeView, пожалуйста)
(Добавление)
Странно,
"-" что при нажатии средней кнопки мыши по Строке 1 или удержании, оно становится Edit ом и его можно редить, а потом оно востанавливается.
"-"Если создано 2 колонки или более, то будет не так:
Цитата: |Колонка1|Колонка2
А будет так, что не красиво выглядит.
Цитата: |Колонка1|Колонка2|
А это плохо, что еще последнюю грань(красная) можно двигать и уменьшать(сами поймете почему)
Код (Отобразить)CODE:#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "CreateWindowEx", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
int histance, listview;
createdialog(0);
showdialog(0, "Dialog", 300, 300, 600, 500, 1, 1);
loop()sleep(100);
function getmessage(0, WM_CREATE)
{
histance=GetWindowLong(gethwnd(0), GWL_HINSTANCE);
listview=CreateWindow(0, "SysListView32", 0, WS_VISIBLE | WS_CHILD | WS_BORDER | LVS_REPORT, 10, 10, 300, 200, gethwnd(0), 0, histance, 0, 0);
add_column(listview, 1, "Событие", 300);//поменять с 300 на 100 или меньше 200 и двигать грань
add_column(listview, 0, "Дата/Время", 200);
add_item(listview, "22.09.2019/11:27");
add_subitem(listview, 1, 0, "Бот остановлен. Причина: Окно игры не найдено.");
}
function add_column(int handle_list, int num_column, string text_column, int width_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVCOLUMN[11];
initialarray(#LVCOLUMN[0], 0);
LVCOLUMN[0]=LVCF_FMT + LVCF_WIDTH + LVCF_TEXT + LVCF_SUBITEM;
LVCOLUMN[1]=LVCFMT_LEFT;
LVCOLUMN[2]=width_column;
LVCOLUMN[3]=address(#text_list[0]);
LVCOLUMN[5]=num_column;
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_INSERTCOLUMN, 0, address(#LVCOLUMN[0]), formatiw(handle_list));
}
function add_item(int handle_list, string text_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVITEM[15];
initialarray(#LVITEM[0], 0);
LVITEM[0]=LVIF_TEXT;
LVITEM[5]=address(#text_list[0]);
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_INSERTITEM, 0, address(#LVITEM[0]), formatiw(handle_list));
}
function add_subitem(int handle_list, int num_column, int num_string, string text_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVITEM[15];
initialarray(#LVITEM[0], 0);
LVITEM[0]=LVIF_TEXT;
LVITEM[1]=num_string;
LVITEM[2]=num_column;
LVITEM[5]=address(#text_list[0]);
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_SETITEM, 0, address(#LVITEM[0]), formatiw(handle_list));
}
function ansi_unicode(string S, char #cc, int size_cc)
{
int count=MultiByteToWideChar(1251, CP_ACP, S, size(S), address(#cc[0]), size_cc);
cc[count*2]=0; cc[count*2+1]=0;
}
(Добавление)
Нажмите для увеличения
|
|
|
Zireael |
Отправлено: 22 Сентября, 2019 - 12:13:36
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: плохо, что еще последнюю грань(красная) можно двигать и уменьшать
LVM_SETCOLUMNWIDTH для этого есть.
ListView (Отобразить)CODE:#define GWL_HINSTANCE -6
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define LVM_INSERTCOLUMN 4193
#define LVM_INSERTITEM 4173
#define LVM_SETITEM 4172
#define LVCF_FMT 1
#define LVCF_WIDTH 2
#define LVCF_TEXT 4
#define LVCF_SUBITEM 8
#define LVCFMT_LEFT 0
#define LVS_REPORT 1
#define LVIF_TEXT 1
#define CP_ACP 0
#define LVM_SETEXTENDEDLISTVIEWSTYLE 4150
#define LVM_SETCOLUMNWIDTH 4126
#define LVSCW_AUTOSIZE_USEHEADER -2
#define LVS_EX_GRIDLINES 1
#define LVS_EX_CHECKBOXES 4
#define LVS_EX_FULLROWSELECT 32
#define LVS_EX_DOUBLEBUFFER 65536
#define LVM_SETTEXTCOLOR 4132
#define LVM_SETTEXTBKCOLOR 4134
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "CreateWindowEx", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
int histance, listview;
createdialog(0);
showdialog(0, "Dialog", 300, 300, 600, 500, 1, 1);
loop()sleep(100);
function getmessage(0, WM_CREATE)
{
histance=GetWindowLong(gethwnd(0), GWL_HINSTANCE);
listview=CreateWindow(0, "SysListView32", 0, WS_VISIBLE | WS_CHILD | WS_BORDER | LVS_REPORT, 10, 10, 300, 200, gethwnd(0), 0, histance, 0, 0);
sendmessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER, formatiw(listview)); // расширенные стили
add_column(listview, 1, "Событие", 100);//поменять с 300 на 100 или меньше 200 и двигать грань
add_column(listview, 0, "Дата/Время", 200);
add_item(listview, "22.09.2019/11:27");
add_subitem(listview, 1, 0, "Бот остановлен. Причина: Окно игры не найдено.");
add_item(listview, "22.09.2019/11:28");
add_subitem(listview, 1, 0, "Текст");
sendmessage(LVM_SETCOLUMNWIDTH, 1, LVSCW_AUTOSIZE_USEHEADER, formatiw(listview)); // выравнивать ширину второго столбца
sendmessage(LVM_SETTEXTCOLOR , 0, 255, formatiw(listview)); // цвет текста
sendmessage(LVM_SETTEXTBKCOLOR , 0, 65280, formatiw(listview)); // цвет фона
}
function add_column(int handle_list, int num_column, string text_column, int width_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVCOLUMN[11];
initialarray(#LVCOLUMN[0], 0);
LVCOLUMN[0]=LVCF_FMT + LVCF_WIDTH + LVCF_TEXT + LVCF_SUBITEM;
LVCOLUMN[1]=LVCFMT_LEFT;
LVCOLUMN[2]=width_column;
LVCOLUMN[3]=address(#text_list[0]);
LVCOLUMN[5]=num_column;
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_INSERTCOLUMN, 0, address(#LVCOLUMN[0]), formatiw(handle_list));
}
function add_item(int handle_list, string text_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVITEM[15];
initialarray(#LVITEM[0], 0);
LVITEM[0]=LVIF_TEXT;
LVITEM[5]=address(#text_list[0]);
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_INSERTITEM, 0, address(#LVITEM[0]), formatiw(handle_list));
}
function add_subitem(int handle_list, int num_column, int num_string, string text_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVITEM[15];
initialarray(#LVITEM[0], 0);
LVITEM[0]=LVIF_TEXT;
LVITEM[1]=num_string;
LVITEM[2]=num_column;
LVITEM[5]=address(#text_list[0]);
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_SETITEM, 0, address(#LVITEM[0]), formatiw(handle_list));
}
function ansi_unicode(string S, char #cc, int size_cc)
{
int count=MultiByteToWideChar(1251, CP_ACP, S, size(S), address(#cc[0]), size_cc);
cc[count*2]=0; cc[count*2+1]=0;
} (Отредактировано автором: 22 Сентября, 2019 - 12:18:48) |
|
|
Zireael |
Отправлено: 22 Сентября, 2019 - 18:29:22
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
RichEdit (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define CFM_COLOR 1073741824
#define SCF_ALL 4
#define EM_SETBKGNDCOLOR 1091
#define EM_SETCHARFORMAT 1092
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "LoadLibrary", "LoadLibraryA", "Kernel32.dll");
LoadLibrary("Msftedit.dll");
int CHARFORMAT[15];
int hinstance;
int edit1, edit2;
createdialog(0);
showdialog(0, "Dialog", 300, 300, 600, 500, 1, 1);
loop()sleep(100);
function getmessage(0, WM_CREATE)
{
edit1=CreateWindow(0, "RICHEDIT50W", "Текст1", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 100, 25, gethwnd(0), 0, 0, 0, 0);
edit2=CreateWindow(0, "RICHEDIT50W", "Текст2", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 40, 100, 25, gethwnd(0), 0, 0, 0, 0);
initialarray(#CHARFORMAT[0], 0);
CHARFORMAT[0]=60;
CHARFORMAT[1]=CFM_COLOR;
CHARFORMAT[5]=255; // цвет шрифта (красный)
sendmessage(EM_SETBKGNDCOLOR, 0, 65280, formatiw(edit1)); // цвет фона (зелёный)
sendmessage(EM_SETCHARFORMAT, SCF_ALL, address(#CHARFORMAT[0]), formatiw(edit1)); // парметры шрифта, в данном примере только цвет задан
CHARFORMAT[5]=16000000; // цвет шрифта (синий)
sendmessage(EM_SETBKGNDCOLOR, 0, 65279, formatiw(edit2)); // цвет фона (жёлтый)
sendmessage(EM_SETCHARFORMAT, SCF_ALL, address(#CHARFORMAT[0]), formatiw(edit2));
} |
|
|
|