Подмена HWND

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

Подмена HWND

Сообщение Cav » 07.01.2006 (Сб) 22:48

Есть картинка , она всё время меняется (анимация) - находится в известном мне окне, я знаю её hwnd, отцовский hwnd...

Вопрос: как сделать так, что бы анимация выводилась не в эту картинку, а в мой picturebox?

Видимо надо есть подменить hwnd той картинки моим или уничтожить ту картинку одновременно создав свою с тем hwnd?

Можно ли насильно менять hwnd контрола?

Cav
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 14.07.2003 (Пн) 19:25

Сообщение Cav » 07.01.2006 (Сб) 22:51

а может мне надо поймать её hdc и подменить своим? мне же картинка нужна?

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 07.01.2006 (Сб) 23:03

BitBlt?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Cav
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 14.07.2003 (Пн) 19:25

Сообщение Cav » 07.01.2006 (Сб) 23:14

она на экране невидима

мне бы именно что бы я мог работать с ней как со совей собсвенноё -это возможно? ведь когда picture на форме невидима - можно же с ней работать? могу я связать hwnd с функциями работы с picturebox?

Cav
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 14.07.2003 (Пн) 19:25

Сообщение Cav » 07.01.2006 (Сб) 23:21

Ну ладно, в конце концов - мне хотя бы возможность сделать скриншот картинки, когда она невидима на экране, но существует.

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 08.01.2006 (Вс) 0:44

Попробуй присвоить в hDC того объекта какой-нибудь левый битмап через SelectObject.
При этом SelectObject возвращает хэндл битмапа, который до вызова ф-ции был присвоен этому hDC.

Cav
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 14.07.2003 (Пн) 19:25

Сообщение Cav » 08.01.2006 (Вс) 16:03

а подробнее можно?

у меня - hwnd чужой картинки, hdc чужой картинки
соотв. то же самое для своего пикчербокса.

Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

какой hdc и hobject вводить? пробовал по разному - возвращает null.

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 09.01.2006 (Пн) 12:07

Ты BitBlt пробовал? Должно работать если на hDC есть изображение, пусть даже и невидимое.
Нет ничего невозможного для человека с интеллектом.

Cav
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 14.07.2003 (Пн) 19:25

Сообщение Cav » 09.01.2006 (Пн) 14:19

щас код приведу:
Код: Выделить всё



Private Declare Function BitBlt Lib "GDI32" (ByVal hDCDest As Long, ByVal XDest As Long, ByVal YDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hDCSrc As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) As Long

Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long



Sub CaptureWindow(WindowhWnd As Long, Output As PictureBox)

    call BitBlt(Output.hDC, 0, 0, 46, 18, GetWindowDC(WindowhWnd), 1, 1, vbSrcCopy)

End Sub



Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 10.01.2006 (Вт) 8:08

Извеняюсь, не проверил. Действительно если окно свернуто или невидимо, содержимое его DC представляет собой пустой фон. И даже если оно видимо, но заслоняется другими окнами или часть окна зашла за край экрана, его содержимое так же не представляет интереса.
Да, нужно читать теорию... Пойду засяду за Эпплмана :?
Нет ничего невозможного для человека с интеллектом.

Cav
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 14.07.2003 (Пн) 19:25

Сообщение Cav » 11.01.2006 (Ср) 13:30

Тогда как?? неужели нету нормальных методов?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.01.2006 (Ср) 13:38

Если окно не видимо, картинка не отрисовывается. Если окно видимо частично, отрисовывается только видимая часть. Единственное, что можно попробовать, это сделать окно полностью видимым и BitBltнуть его.
Лучший способ понять что-то самому — объяснить это другому.

Cav
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 14.07.2003 (Пн) 19:25

Сообщение Cav » 11.01.2006 (Ср) 15:40

так и делаю... нехорошо полчается...


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

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

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 44

    TopList