Выводить картинку на чужую форму.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Выводить картинку на чужую форму.

Сообщение Matew » 07.07.2005 (Чт) 7:28

Мне нужно выводить картинку на форму другого приложения(написанного на другом языке). На ней есть контролы(типа пикчер боксов) на них я гружу картинки с *.BMP, средствами того языка.
Есть 3 варианта решения проблемы по сложности я бы их разделили так:

1. Делаю АктивИкс с невидимой формой сохраняю из него в БМП, но из АктивИкс форму почему то видно. Из EXE эта же форма запускалась и была невидима, а переделал в длл стала видимой :( . Самый простой но самый корявый способ.(я пока делаю так)

2.Нужно что- то вроде этого:
http://bbs.vbstreets.ru/viewtopic.php?t ... avepicture
(для сохранения картинки в файл без формы), но.. это че-то сложно.

3.Непосредственно из hDC грузить на контрол чужой формы.

Подскажите плиз самое лучшее решение и спосб его реализации.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 08.07.2005 (Пт) 5:45

Никто не откликнулся, значит я плохо задал вопросы.
Перефразируем так:
1. Как из АктивИкс запустить невидимую форму?
или
2. Как узнать hDC контрола на чужой форме?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.07.2005 (Пт) 5:54

1. Нефиг.
2. getdc(findwindowex(findwindow(vbnullstring, "Заголовок"), 0, "Класс", vbnullstring))
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 08.07.2005 (Пт) 6:04

1. Я не понял почему?
2. "Заголовок" - это заголовок окна? И расскажи как узнать класс? (Этот контрол, что - то типа пикчербокса)

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 08.07.2005 (Пт) 6:21

Поискал по Api- guide и понял, что мой вопрос не корректен - мне надо hDc контрола дочернего окна, в этом случае будет так:

getdc(findwindowex(findwindowex(findwindow(vbnullstring, "Заголовок"), 0,vbnullstring, "ЗаголовокДочернего")0, "Класс", vbnullstring"))?

И вопрос про класс остается для меня открытым.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 08.07.2005 (Пт) 6:26

Я знаю, что программа написана на C++ это поможет в определении класса?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.07.2005 (Пт) 7:18

Нет. Spy++ поможет в определении класса.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 09.07.2005 (Сб) 4:56

Теперь я знаю все о нужном контроле, но у меня возникла другая проблема, когда я рисую на нем через hDC: после обновления формы рисунок пропадает! :( Как этого избежать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.07.2005 (Сб) 6:11

Перерисовывать при обновлении формы.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 09.07.2005 (Сб) 6:21

А как отследить?? Могу по таймеру, но этого плохо...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.07.2005 (Сб) 6:32

Ловить WM_PAINT.

Впрочем, это уже вопрос межпроцессного сабклассинга.
Не делай так :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 09.07.2005 (Сб) 13:37

А как делать? Ведь должен же быть способ!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.07.2005 (Сб) 14:14

Matew, а не проще положить своё окно на чужую форму, и отрисовывать его как тебе нравится?
Изображение

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 09.07.2005 (Сб) 14:31

tyomitch, это подойдет, если мое окно распечатается с остальной формой (это печатная форма, она выходит на принтер).

А нельзя ли рисовать на форме через ее HWnd? Т.к. если я меняю например текст формы он остается навсегда.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.07.2005 (Сб) 14:32

Логично :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 09.07.2005 (Сб) 15:26

:) эт я понимаю.
1.Распечатается ли моя форма на чужой если чужую вывести на принтер?
2. Так можно ли через hwnd? Есть что-то типа redraw или lock-что-там (эти функции через hwnd они мне могут помочь?)
3. Мне ваще что -нить может помочь или все таки без формы никак?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.07.2005 (Сб) 15:57

1. Да.
2. Нет.
3. Способов масса, но какой твой личный порог переносимости геморроя? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 09.07.2005 (Сб) 16:07

Мне 1. понравилось. Можно пример вывода своей формы на чужую?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.07.2005 (Сб) 19:15

Matew, см. http://vbrussian.com/Examples.asp?ID=102
Там моя форма выводится поверх часиков.
Изображение

Alian
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 05.07.2005 (Вт) 0:25

Сообщение Alian » 09.07.2005 (Сб) 22:21

Чуваки, да вы чего? Что тут обсуждать? Я сильно удивлюсь, если Вам винда такое позволит сделать! А если серьёзно: свяжитесь с автором той программы (например чтобы написать общий проект).

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.07.2005 (Сб) 22:25

Alian, см. http://vbrussian.com/Examples.asp?ID=102
Там моя форма выводится поверх часиков.
:twisted:
Изображение

Alian
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 05.07.2005 (Вт) 0:25

Сообщение Alian » 09.07.2005 (Сб) 22:44

Ну смотрел... вроде... Разве можно выдавать такой пример, если с полоборота програ не идёт? Runtime error 429: ActiveX component can't create object.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.07.2005 (Сб) 23:10

Alian писал(а):Ну смотрел... вроде... Разве можно выдавать такой пример, если с полоборота програ не идёт? Runtime error 429: ActiveX component can't create object.

А догадаться зарегистрировать библиотеку перед запуском ехешника - чересчур нетривиально, да?
А догадаться запустить исходник, а не ехешник - чересчур нетривиально, да?
:twisted: :twisted:

Блин, как все задолбали...
Изображение

Alian
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 05.07.2005 (Вт) 0:25

Сообщение Alian » 09.07.2005 (Сб) 23:16

Не в обиду: а без этого прогру написать слабо? 8) Или так щас модно? 8) Человеку надо попроще примерчик, не то, что требует коллекцию ActiveX. А библиотеку скачаю - всё равно хочется оценить по достоинству. :wink:

Alian
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 05.07.2005 (Вт) 0:25

Сообщение Alian » 09.07.2005 (Сб) 23:22

Часики - отпад! :D . А код полегче есть?

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 09.07.2005 (Сб) 23:33

То ты кричишь:
Чуваки, да вы чего? Что тут обсуждать? Я сильно удивлюсь, если Вам винда такое позволит сделать!

А теперь:
А код полегче есть?

Ты определись как-то :roll:

Alian
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 05.07.2005 (Вт) 0:25

Сообщение Alian » 09.07.2005 (Сб) 23:36

Да Вы чего? Я нормально отреагировал. Но если столько движок весит. Я писал и полегче (7 строк), но не по этой теме.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.07.2005 (Вс) 0:42

Alian, код помещения моей формы поверх часиков занимает 12 строк. Всё остальное, в том числе библиотека, - для отрисовки стрелок; автору этого не надо.
Не надо кипятиться попусту. Если большая охота понабивать посты - иди в Народный Трёп, он для того и есть.

Не знаю, что ты там писал на 7 строк, если считал, что Винда такого сделать не позволит...
Изображение

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 10.07.2005 (Вс) 6:39

К сожелению не могу попасть на http://vbrussian.com/Examples.asp?ID=102
и даже на http://vbrussian.com :(

Alian
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 05.07.2005 (Вт) 0:25

Сообщение Alian » 10.07.2005 (Вс) 10:49

Понабивать посты я не могу - не выгодно. Я не кипячусь - всё путём. Но часы - форма, т. к. нет прежнего контекстного меню часов и double click не рулит. А если чем обидел - извини. :wink:

P. S.
А писал я прогру часики высотой 9 пикселей, а шириной 32 пикселя, возвожность крепить "Always on top", таскать за всё, что можно и милый шрифт в стиле "цифровые". :wink:

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 128

    TopList  
cron