Form.AutoRedraw = True

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Form.AutoRedraw = True

Сообщение X-BOND » 20.09.2005 (Вт) 13:11

Кто знает, как реализован этот механизм?
Я имею предположение, что создается MemoryDC, который при рисовании на форме подменяет Form.DC, а после вызова InvalidateRect и подобных, а также после сообщения WM_PAINT, происходит копирование MemoryDC > Form.DC.
Насколько я ошибаюсь?

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 20.09.2005 (Вт) 13:37

Не ошибаешься. Можно даже при помощи небольшого hack'а подменить его на свой MemoryDC с прямым доступом на котором можно рисовать и писать средствами PictureBox.
Программисты не глючат - глючат компиляторы...

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

Сообщение tyomitch » 20.09.2005 (Вт) 18:57

Чуть-чуть ошибаешься, но не по этой теме. Отрисовка из MemoryDC идёт только в WM_PAINT, который (кроме прочего) может вызываться InvalidateRect.

Т.е. правильно: "... после вызова InvalidateRect и подобных, в результате которых приходит сообщение WM_PAINT, происходит копирование ..."
Изображение


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

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

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

    TopList