Мерцание при Refresh в WB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Мерцание при Refresh в WB

Сообщение Tin » 22.02.2007 (Чт) 8:19

В WebBrowser загружена HTML страница, которая иногда изменяется. Можно ли сделать так, чтоб при Refresh WB не мерцал и не "дрыгал" скролингом?
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 22.02.2007 (Чт) 9:02

Кинул WebBrowser в PictureBox. Написал
Код: Выделить всё
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    LockWindowUpdate 0
End Sub

Private Sub WebBrowser1_DownloadBegin()
    LockWindowUpdate Picture1.hWnd
End Sub

Изменения отображаются только по полной загрузке страницы, моргания не наблюдаю. Подойдет?

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 22.02.2007 (Чт) 9:51

Да, спасибо огромное
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

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

Сообщение GSerg » 22.02.2007 (Чт) 11:17

Раз.

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

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

Сообщение tyomitch » 22.02.2007 (Чт) 23:03

И как раз сегодня Чен пишет, что LockWindowUpdate не для этого.
http://blogs.msdn.com/oldnewthing/archi ... 42084.aspx
Изображение

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 23.02.2007 (Пт) 7:03

Спасибо за отличную статью
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.02.2007 (Пн) 9:14

Ага, совершенно не для этого.
И ЕМНИП он глобальный для всей системы. Неправильно его применять там, где процесс может затянуться на ощутимое время.
Lasciate ogni speranza, voi ch'entrate.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 26.02.2007 (Пн) 11:24

Он не то, что глобальный, он
Only one window can be locked at a time.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 23.03.2007 (Пт) 11:17

Кто знает, как объявить SetWindowRedraw ?
Ответы типа "В поиск" не катят, ибо поиск дает объявление в стиле
Delphi: void WINAPI SetWindowRedraw(HWND hwnd, BOOL fRedraw)
и СПП: #define SetWindowRedraw(hwnd, fRedraw)
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

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

Сообщение GSerg » 23.03.2007 (Пт) 11:38

VB_D3D_Денис писал(а):Delphi: void WINAPI SetWindowRedraw(HWND hwnd, BOOL fRedraw)

Дельфи, говоришь?..
Желая показаться умным, следует выбрать для этого область, в которой это действительно получится.

Такой функции нет, и если бы ты посмотрел на то, что идёт после #define SetWindowRedraw(hwnd, fRedraw), ты бы увидел, что это вызов SendMessage с нужными параметрами.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


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

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

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

    TopList