powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Прорисовка без мелькания
7 сообщений из 7, страница 1 из 1
Прорисовка без мелькания
    #32624559
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем!
Я написал ActiveX для IE в Visual C++ с помощью
ATL Wizard. На нём можно рисовать мышью линии.
Только при протягивании мышью линии всё мелькает.
Я помню в какой-то книге видел код как с помощью
функций BitBlt или StretchBlt и контекста устройства
в памяти делается прорисовка без мелькания.
Но к сожалению этой книги сейчас нет.
Если кто знает как это сделать или ссылку где написано
как это сделать, то подскажите пожалуйста.
Заранее большое спасибо!
...
Рейтинг: 0 / 0
Прорисовка без мелькания
    #32624659
Их есть у меня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.catch22.org.uk/tuts/flicker.asp
...
Рейтинг: 0 / 0
Прорисовка без мелькания
    #32624660
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты моё письмо получил? С кругами разобрался? :)

На счёт мелькания - надо делать дублирующий буфер.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
HDC dc = GetDC(hWnd); // это dc окна
HDC cdc = CreateCompatibleDC(dc); //а это к нему компатибл, в него и будем рисовать
HBITMAP hCBm = CreateCompatibleBitmap(dc,width, height); //предварительно создав компатибл битмап для родного dc....
HBITMAP hOldBm = (HBITMAP)SelectObject(cdc,hCBm); //... и запихав его в компатибл dc.
//....
//ок, нарисовали... теперь копируем
BitBlt(dc,x,y,w,h,cdc,x1,y1,SRCCOPY);
// Всё, у тебя не будет каждый раз дёргаться фон при WM_PAINT.
SelectObject(cdc,hOldBm);
DeleteObject(hCBm);
DeleteDC(cdc);
ReleaseDC(hWmd,dc); // всех отпустим.
// Правда, не помню, при BitBlt нужен ли битмап в родном dc....
...
Рейтинг: 0 / 0
Прорисовка без мелькания
    #32624742
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем большое!
СЕМb твоё письмо получил. Спасибо.
Разобрался так: сделал новый проект, только когда новый ATL-объект
добавлял на вкладке Stock Properties взял не все типовые свойства
а только BackGround Color и ForeGround Color. Сейчас всё везде рисует
скорее всего даже не в свойствах дело было, я же в первом проекте
удалял из *.idl кое-что потом вставлял, так что может что-то не корректно
сделал вот и заглючило. Я же первый раз ATL Wizard пользовался. Да и в
Visual C++ макросов столько разных наворочено (я до этого в Builder C++ писал) что они делают непонятно. Да, ещё заметил у меня в конструкторе
появилась строка
m_bWindowOnly = TRUE;
в старом проекте её не было. Я тебе послал там на vsem@pisem.net некоторые
файлы из старого проекта пока проблема не была ещё решена. Если надо могу
послать из нового.
Ещё раз всем большое спасибо!
...
Рейтинг: 0 / 0
Прорисовка без мелькания
    #32626353
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ же первый раз ATL Wizard пользовался. Да и в
Visual C++ макросов столько разных наворочено (я до этого в Builder C++ писал) что они делают непонятно.

Тоже через ATL делал один раз и тоже куча непонятных макросов :)
Так что теперь тока через MFC-шные карты :)
Там всё просто и понятно.
...
Рейтинг: 0 / 0
Прорисовка без мелькания
    #32626361
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет СЕМb!
Про MFC я читал, что надо будет дополнительные библиотеки
на клиентскую машину ставить, поэтому взялся за ATL.
...
Рейтинг: 0 / 0
Прорисовка без мелькания
    #32626577
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тока если саму MFC но она уже вроде как на всех машинах стоит :)

А вообще надо будет посмотреть, как это без MFC делается... Всмысле COM.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Прорисовка без мелькания
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]