Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Описание: внутри...
ivantu
Отправлено: 02 Сентября, 2019 - 16:56:08
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Здравствуйте, подскажите можно ли позиционировать контролы относительно друг друга,
к примеру есть кнопка
CODE:
tab[0][2]=CreateWindow(0, "BUTTON", "Проверять", BS_AUTOCHECKBOX | WS_VISIBLE | WS_CHILD, 15, 80, 150, 35, gethwnd(0), 0, 0, 0);


я хочу вызвать диалог относительно её положения, как то можно получить координаты?
или все ручками писать?

(Отредактировано автором: 02 Сентября, 2019 - 16:57:15)

 
 Top
Nikanr
Отправлено: 02 Сентября, 2019 - 17:56:28
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019  
Репутация: 5




Можно с помощью функции getmouse

CODE:

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int b2,x,y;

int pos_size_edit0[1][4];
string text_edit0[1];
pos_size_edit0[0][0]=69; pos_size_edit0[0][1]=98; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=20;
text_edit0[0]="Поле 0";

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


function getmessage(0, WM_CREATE)
{
b2=CreateWindow(0, "BUTTON", "Диалог", 1342177280, 10, 50, 120, 30, gethwnd(0), 0, 0, 0);
}

function getmessage(0, WM_COMMAND)
{
if (message.lparam==b2){getmouse(x,y);createdialog(1, EDIT, #pos_size_edit0[0][0], #text_edit0[0]);showdialog(1, "Диалог", x, y, 250, 300, 0, 1);}
}

loop()pause(100);

 
 Top
ivantu
Отправлено: 02 Сентября, 2019 - 18:24:02
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Спасибо, только отпозицианировать, точно таким путем не получится, диалог будет рядом с кликом по кнопке, а не относительно кнопки, но как вариант все же спасибо.
 
 Top
Kibor
Отправлено: 02 Сентября, 2019 - 18:49:29
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8098
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Узнать текущие координаты диалога, прибавить к ним координаты контрола в диалоге.
Это и есть экранные координаты контрола.
По ним выводить диалог.
 
 Top
Nikanr
Отправлено: 02 Сентября, 2019 - 19:03:42
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019  
Репутация: 5




Немного модифицировал. Ну или можно сделать как подсказали выше)

CODE:

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int b2,x,y,g,c;
win w;

int pos_size_edit0[1][4];
string text_edit0[1];
pos_size_edit0[0][0]=69; pos_size_edit0[0][1]=98; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=20;
text_edit0[0]="Поле 0";

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



function getmessage(0, WM_CREATE)
{
b2=CreateWindow(0, "BUTTON", "Диалог", 1342177280, 10, 50, 120, 30, gethwnd(0), 0, 0, 0);
}

function getmessage(0, WM_COMMAND)
{
if (message.lparam==b2){
getmouse(x,y);
w=getwindow(1,x,y); //получаем указатель на контрол под мышкой
g=w.leftclient; //позиция позиция клиетской части по x относительно левого края экрана
c=w.topclient; //позиция клиетской части по y относительно левого края экрана

createdialog(1, EDIT, #pos_size_edit0[0][0], #text_edit0[0]);
showdialog(1, "Диалог", g, c, 250, 300, 0, 1);
}
}

loop()pause(100);

(Отредактировано автором: 02 Сентября, 2019 - 19:06:55)

 
 Top
ivantu
Отправлено: 02 Сентября, 2019 - 19:13:03
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Огромное спасибо всем за помощь
 
 Top
Zireael
Отправлено: 03 Сентября, 2019 - 03:18:33
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4398
Дата рег-ции: Нояб. 2017  
Репутация: 580




CODE:
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );

win button0;
int b0;

createdialog(0);
createdialog(1);
showdialog(0, "Dialog1", 100, 100, 300, 300, 1, 1);

loop()sleep(10);

function getmessage(0, WM_CREATE)
{
b0=CreateWindow(0, "BUTTON", "Кнопка", WS_BORDER | WS_CHILD | WS_VISIBLE, 100, 100, 80, 25, gethwnd(0), 0, 0, 0);
button0=formatiw(b0);
}

function getmessage(0, WM_COMMAND)
{
if (message.lparam==b0) // если нажата кнопка
{
setwindowparam(button0); // получить параметры кнопки
showdialog(1, "Dialog2", button0.left, button0.top, 300, 300, 0, 1); // показать 2й диалог
}
}
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by