Kibor |
Отправлено: 15 Ноября, 2017 - 02:38:25
|
Эксперт
Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Доработка visualwindow.
Теперь можно указать первым параметром (не обязательный параметр) указатель win на любой диалог и visualwindow будет выводить изображение не на экран, а непосредственно на этот диалог.
Указывать можно указатели как на свои диалоги (не модальные) так принадлежащие чужим программам.
Пример создания не модального диалога и вывода на него изображения части экрана. Можно выводить с файла и окна.
CODE:int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
pos_size_button0[0][0]=4; pos_size_button0[0][1]=110; pos_size_button0[0][2]=105; pos_size_button0[0][3]=20;
text_button0[0]="Закрыть";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);
//////////
showdialog(0, "Наш бот", 558, 234, 115, 170, 1, 1);
//////////
win aw=window("Наш бот");//Получаем указатель на наше окно
visualwindow(aw, 0, 0, 0, 100, 100, 5, 5 , 100, -1);//Включаем вывод на нашем окне
loop()
{
if (flag_button0[0]==1)
{
flag_button0[0]=0;
disablevisualwindow(0);
sleep(100);
destroydialog(0);
goto s;
}
sleep(10);//Убрать после теста
}
s:;
Внимание: Закрытие чужого диалога когда на него идет вывод может привести к ошибке. |
|
|
007wan |
Отправлено: 15 Ноября, 2017 - 14:01:54
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Kibor , Ай красава) яя тоже самое помню писал, только, используя win, но тут не много по другому, красава. ты упростил задачу, ай молодес) надеюсь буду чаще обовки
(Добавление)
Просто мне ваш вариант нравится тем, что картинка в окне грубо говоря, а мой вариант, он как бы был не очень, потому что картинка из визуалавиндов не успевала за диалогом, она как бы "отрывалась", когда ее перетаскиваешь |
|
|
007wan |
Отправлено: 16 Ноября, 2017 - 16:48:19
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Kibor пишет: Ты выводил на экран по координатам окна, а это выводит именно в окне. Это совсем другое.
так да. я и считаю, что лучше ваш вариант.
Кстати можно доработать пару мелочей, у меня пока нету времени тестить это, но можно добавить пару переменных:
1)визуальный вывод будет поверх кнопок, галок, текстов итд.
Теперь хочу объяснить для чего то, что ниже: есть программы, меняющие размер окна...
2)так вот можно сделать так, что бы с изменением размера окна, так же менялся размер вывода визуальной картинки, т.е если растянуть окно в программе, которая меняет размер окна, то растянется и сама картинка визуалвиндов.
(Добавление)
Ой, т.е если растянуть диалог с визульной картинкой с помощью программы, которая меняет размер окна, то растянется в Диалоге и сама картинка визуала
(Добавление)
Так же переменным будет соответствующая маркировка:
1-работает, 0-не работает |
|
|
Kibor |
Отправлено: 17 Ноября, 2017 - 16:52:00
|
Эксперт
Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
CODE:win aw1;
win aw=window ("Безымянный — Блокнот", "Notepad", -1);
X=aw.widthclient;
Y=aw.heightclient;
visualwindow(aw, 0, 0, 0, X-100, Y-100, 50, 50 , 100, -1);
int X, Y;
enabletimer(0);
loop()sleep(10);
CREATE_TIMER(0, 500)//следим за изменением размера окна блокнота
{
aw1=window ("Безымянный — Блокнот", "Notepad", -1);
if (X!=aw1.widthclient || Y!=aw1.heightclient)
{
aw=window ("Безымянный — Блокнот", "Notepad", -1);
X=aw.widthclient;
Y=aw.heightclient;
visualwindow(aw, 0, 0, 0, X-100, Y-100, 50, 50 , 100, -1);//изменяем вывод
}
} |
|
|
007wan |
Отправлено: 18 Ноября, 2017 - 11:30:14
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Kibor , Еще такая фича есть, если поменять прозрачность окна с помощью "tranparence", то размер визуальная накладка картинки не поменяет прозрачность, но можно ее регулировать напрямую параметрами прозрачность визуалвиндов и транспатенсив(я это ен проверял, но так на теории, хотя по идеи если меняешь прозрачность окна, то меняется прозрачность визуалвиндов, т.к визуалка является частью окна, оно в окне_
(Добавление)
007wan пишет: визуальный вывод будет поверх кнопок, галок, текстов итд.
Только наоборот...не поверх всего, это реально не удобно, заслоняет все кнопки и галки.(Отредактировано автором: 18 Ноября, 2017 - 11:30:46) |
|
|
007wan |
Отправлено: 21 Ноября, 2017 - 18:04:06
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Херня какая-то выходит с этим кодом:
CODE:int Ничего[209][36];
loadimage (#Ничего[0][0], "C:\Users\Home\Desktop\МОЁ\тесты картинок\Ничего.bmp");
win aw=window ("Выбрать ник", "Button", window ("Добропожаловать в чат v1.0"));//Получаем указатель на наше окно
visualwindow(aw, 0, 0, 0, 80, 22, 0, 0 , 100, -1);//Включаем вывод на нашем окне
По сути должен искать кнопку "выбрать ник" в окне "Добропожаловать в чат v1.0", это работает, но когда жмешь кнопку, то происходит вот что(помните я делал превращение статика в эдит и наоборот? так вот жмешь кнопку статик "улетает", а эдит ставится где раньше была статика, и наоборот, когда жмем снова кнопку)у меня при нажатии кнопки визуальное окно выводится не на кнопку в окно, а в окно, но в самый угол(я полагаю по коррдинатам 0;0)
(Добавление)
Почему так происходит? наверное не находит ту самую кнопку, но она есть, просто за пределы диалога, ее не видно. |
|
|
|