BeginPaint, EndPaint

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

BeginPaint, EndPaint

Сообщение 13GHOST » 17.05.2009 (Вс) 17:26

При перерисовке окно мерцает, почитал статьи и так понял, что в этом случае надо использовать BeginPaint и EndPaint. Решил их опробывать и ничего не получилось:(
вот код:
Код: Выделить всё
Select Case uMsg
Case WM_PAINT
    Dim pSct As PAINTSTRUCT
    Call BeginPaint(UserControl.hwnd, pSct)
    pSct.rcPaint.Right = lngPicScaleWidth
    pSct.rcPaint.Bottom = lngPicScaleHeight
    BitBlt UserControl.hdc, 0, 0, lngPicScaleWidth, lngPicScaleHeight, c_BufDC, 0, 0, vbSrcCopy
    Call EndPaint(hwnd, pSct)
...

в c_BufDC находится рисонок, который надо скопировать на компонент, в результате добавления BeginPaint, EndPaint вообще ничего не стало рисоваться.
После Call BeginPaint(UserControl.hwnd, pSct) в pSct.rcPaint одни нули
Может я что-то не так делаю?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: BeginPaint, EndPaint

Сообщение Хакер » 17.05.2009 (Вс) 17:56

в c_BufDC находится рисонок

Фраза наводит на мысль, что ты, как и многие другие заблуждающиеся, считаешь, что DC --- это некий контейнер. Действительно?

По коду: я не понял, зачем (и почему?) ты меняешь поля paintstruct-а?


И вообще, хотелось бы видеть весь код.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Re: BeginPaint, EndPaint

Сообщение 13GHOST » 17.05.2009 (Вс) 20:23

да поля тут непричем), нет я не считаю что на DC находится рисок просто образно выразился)
вообще проблема решилась, оказывается когда добавлял сообщение WM_PAINT использовал MSG_AFTER. А это API можно использовать только при обраотке WM_PAINT или еще где?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: BeginPaint, EndPaint

Сообщение Хакер » 17.05.2009 (Вс) 20:44

13GHOST писал(а):А это API можно использовать только при обраотке WM_PAINT или еще где?

Какое это? Сабжевые?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Re: BeginPaint, EndPaint

Сообщение 13GHOST » 17.05.2009 (Вс) 22:02

да)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: BeginPaint, EndPaint

Сообщение Хакер » 17.05.2009 (Вс) 22:09

Ответ вычисляется чтением MSDN:
An application should not call BeginPaint except in response to a WM_PAINT message. Each call to BeginPaint must have a corresponding call to the EndPaint function.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Re: BeginPaint, EndPaint

Сообщение 13GHOST » 18.05.2009 (Пн) 10:07

спасибо теперь все ясно


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

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

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

    TopList