Zireael |
Отправлено: 03 Февраля, 2019 - 18:06:43
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Пример, как вывести static (Отобразить)external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int static1, static2, static3, static4, static5;
//////////
createdialog(0);
showdialog(0, "Диалог", 258, 234, 250, 300, 1, 1);
//////////
loop() sleep(10);//Убрать после теста
function getmessage(0, WM_CREATE)
{
static1=CreateWindow(0, "STATIC", "Строка1", 1342177280, 20, 10, 100, 20, gethwnd(0), 0, 0, 0); // текст
static2=CreateWindow(0, "STATIC", "", 16+1342177280, 20, 40, 100, 1, gethwnd(0), 0, 0, 0); // горизонтальная линия
static3=CreateWindow(0, "STATIC", "", 17+1342177280, 20, 70, 1, 30, gethwnd(0), 0, 0, 0); // вертикальная линия
static4=CreateWindow(0, "STATIC", "Нажми сюда", 256+1342177280, 20, 110, 90, 20, gethwnd(0), 0, 0, 0); // отсылает сообщение
static5=CreateWindow(0, "STATIC", "Текст", 4096+1342177280, 20, 140, 100, 20, gethwnd(0), 0, 0, 0); // утопленная рамка
}
function getmessage(0, WM_COMMAND)
{
if (message.lparam==static4) // если нажата static4
{
messagebox("Был клик по строке" );
}
} |
|
|
ivantu |
Отправлено: 03 Февраля, 2019 - 19:09:30
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Друзья а где то можно узнать за что все эти параметры отвечают?
CODE:static3=CreateWindow(0, "STATIC", "", 17+1342177280, 20, 70, 1, 30, gethwnd(0), 0, 0, 0); // вертикальная линия
к примеру 17+1342177280 - это что такое? |
|
|
Zireael |
Отправлено: 03 Февраля, 2019 - 23:34:37
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: к примеру 17+1342177280 - это что такое?
createwindowexa
window-styles
Смотрим стили окон:
WS_CHILD (дочернее окно)
0x40000000
WS_VISIBLE (окно видимое)
0x10000000
Складываем 40000000+10000000=50000000, переводим в десятичное 1342177280.
Т. е. создаём дочернее окно, которое сразу будет видимое. Если надо можно ещё добавить что-то к стилю окна.
Теперь, смотрим стили контролов, например кнопки:
button-styles
Допустим надо создать галку (это тоже кнопка), находим BS_AUTOCHECKBOX, пока нет файла с константами ищем код константы, например тут, находим BS_AUTOCHECKBOX 0x00000003, переводим в десятичное число, так и останется 3.
Т. е.
CODE:CreateWindow(0, "BUTTON", "Галка0", 3+1342177280, 20, 10, 70, 20, formatwi(w), 0, 0, 0);
// CreateWindow(0, "BUTTON", "Галка0", 1342177283, 20, 10, 70, 20, formatwi(w), 0, 0, 0); // или так, без разницы
Создаст галку.
Константы можно посмотреть ещё тут и тут. |
|
|
Dantes3000 |
Отправлено: 04 Февраля, 2019 - 04:50:55
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
CODE:external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
int flag=0;
int edit=CreateWindow(0, "EDIT", "asd", 1353715844, 100, 100, 70, 70, gethwnd(0), 0, 0, 0);
int b1=CreateWindow(0, "BUTTON", "Первая кнопка", 1342177280, 10, 10, 120, 30, gethwnd(0), 0, 0, 0);
while(flag==0) sleep(100);
loop() {beep(800, 100); pause(500);}
function getmessage(0, WM_COMMAND)
{
if (message.lparam==b1) flag=1;
}
Почему если нажать на edit, то срабатывает getmessage?(Отредактировано автором: 04 Февраля, 2019 - 04:59:53) |
|
|
Kibor |
Отправлено: 04 Февраля, 2019 - 11:02:00
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Dantes3000 пишет: Почему если нажать на edit, то срабатывает getmessage?
Исправил.
Пока что выложил файл констант. Там не все, но основные
http://kibor-bot.com/files/constant.txt
Подключать так:
CODE:#definefile "C:\Program Files (x86)\Kibor\constant.txt" |
|
|
Kibor |
Отправлено: 04 Февраля, 2019 - 17:29:50
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Цитата: #define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define BS_AUTOCHECKBOX 3
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int b1, b2;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
loop()sleep(1);
function getmessage(0, WM_COMMAND)
{
if (message.lparam==b1)messagebox ("кнопка");
if (message.lparam==b2)messagebox ("галка");
}
function getmessage(0, WM_CREATE)
{
b1=CreateWindow(0, "BUTTON", "Кнопка", WS_VISIBLE | WS_CHILD, 10, 10, 120, 30, gethwnd(0), 0, 0, 0);
b2=CreateWindow(0, "BUTTON", "Галка", WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, 10, 50, 120, 30, gethwnd(0), 0, 0, 0);
}
Изменить шрифт
CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define BS_AUTOCHECKBOX 3
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
external(INT, "SendMessage", "SendMessageA", "User32.dll" );
int b1, b2;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
loop()sleep(1);
function getmessage(0, WM_COMMAND)
{
if (message.lparam==b1)messagebox ("кнопка");
if (message.lparam==b2)messagebox ("галка");
}
function getmessage(0, WM_CREATE)
{
int h_font = CreateFont(-13, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, "Times New Roman");
b1=CreateWindow(0, "BUTTON", "Кнопка", WS_VISIBLE | WS_CHILD, 10, 10, 120, 30, gethwnd(0), 0, 0, 0);
b2=CreateWindow(0, "BUTTON", "Галка", WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, 10, 50, 120, 30, gethwnd(0), 0, 0, 0);
SendMessage(b1, WM_SETFONT, h_font, 1);
}
или
CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define BS_AUTOCHECKBOX 3
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
int b1, b2;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
loop()sleep(1);
function getmessage(0, WM_COMMAND)
{
if (message.lparam==b1)messagebox ("кнопка");
if (message.lparam==b2)messagebox ("галка");
}
function getmessage(0, WM_CREATE)
{
int h_font = CreateFont(-13, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, "Times New Roman");
b1=CreateWindow(0, "BUTTON", "Кнопка", WS_VISIBLE | WS_CHILD, 10, 10, 120, 30, gethwnd(0), 0, 0, 0);
b2=CreateWindow(0, "BUTTON", "Галка", WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, 10, 50, 120, 30, gethwnd(0), 0, 0, 0);
sendmessage(WM_SETFONT, h_font, 1, formatiw(b1));
} |
|
|
Zireael |
Отправлено: 05 Февраля, 2019 - 10:57:27
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Изменить картинку на кнопке при нажатии на кнопку (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define BS_BITMAP 128
#define BM_GETIMAGE 246
#define BM_SETIMAGE 247
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "LoadImage", "LoadImageA", "User32.dll");
int b0, image1, image2;
image1=LoadImage(0, "C:\Button1.bmp", 0, 100, 34, 16); // загрузка картинки 100*34
image2=LoadImage(0, "C:\Button2.bmp", 0, 100, 34, 16); // загрузка картинки 100*34
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
loop()sleep(1);
function getmessage(0, WM_CREATE)
{
b0=CreateWindow(0, "BUTTON", "", WS_CHILD | WS_VISIBLE | BS_BITMAP, 20, 10, 100, 34, gethwnd(0), 0, 0, 0); // создать кнопку
sendmessage(BM_SETIMAGE, 0, image1, formatiw(b0)); // установить изображение image1
}
function getmessage(0, WM_COMMAND)
{
if (message.lparam==b0) // если нажата кнопка
{
// узнаём хендл изображения, если установлено image1, то ставим image2, иначе image1
if(sendmessage(BM_GETIMAGE, 0, 0, formatiw(b0))==image1)sendmessage(BM_SETIMAGE, 0, image2, formatiw(b0)); // установить image2
else sendmessage(BM_SETIMAGE, 0, image1, formatiw(b0)); // установить image1
}
}
Список в несколько колонок (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define LBS_NOTIFY 1
#define LBS_MULTICOLUMN 512
#define LBS_EXTENDEDSEL 2048
#define LB_ADDSTRING 384
#define LB_SETCOLUMNWIDTH 405
#define LB_SETITEMHEIGHT 416
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int i, list;
string list_string[7]={"Строка1", "Строка2", "Строка3", "Строка4", "Строка5", "Строка6", "Строка7"};
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
// добавить строки в список
char c[255];
for(i=0; i<sizearray(list_string); i++)
{
strcpy(#c[0], list_string[i]);
sendmessage(LB_ADDSTRING, 0, address(#c[0]), formatiw(list));
}
loop()sleep(1);
function getmessage(0, WM_CREATE)
{
list=CreateWindow(0, "LISTBOX", "", WS_VISIBLE | WS_CHILD | LBS_NOTIFY | WS_BORDER | LBS_EXTENDEDSEL | LBS_MULTICOLUMN, 10, 10, 220, 60, gethwnd(0), 0, 0, 0);
sendmessage(LB_SETCOLUMNWIDTH, 70, 0, formatiw(list)); // ширина колонок
sendmessage(LB_SETITEMHEIGHT, 0, 16, formatiw(list)); // высота строк
} |
|
|
|