Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> графика в диалоговом окне, мерцает 
:(
    Опции темы
Дима
Дата 28.11.2002, 22:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сделал все по книге а оно мерцает.
Подскажите пожалуйста как избежать!

void MyDialog::OnPaint()
{
CWnd* pWnd = GetDlgItem(IDC_STATIC1);
CDC* pControlDC = pWnd->GetDC();

pWnd->Invalidate();
pWnd->UpdateWindow();
pControlDC->SelectStockObject(BLACK_BRUSH);
pControlDC->Rectangle(0,0,10,10);
pWnd->ReleaseDC(pControlDC);
}
  Вверх
AntonSaburov
Дата 29.11.2002, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Можно попытаться ускорить вывод графики. Если в двух слова, то вывести рисунок в память а потом уже отображать.
PM MAIL WWW ICQ   Вверх
Observer
Дата 29.11.2002, 02:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











По-моему не хватает device-context objects в начале
  Вверх
Baa
Дата 29.11.2002, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12





--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Blade
Дата 29.11.2002, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 8.7.2002

Репутация: нет
Всего: нет



Код

void MyDialog::OnPaint()
{
CWnd* pWnd = GetDlgItem(IDC_STATIC1);
CDC* pControlDC = pWnd->GetDC();

А что это за чушь?????
Код
pWnd->Invalidate(); - ?
pWnd->UpdateWindow(); - ?
pControlDC->SelectStockObject(BLACK_BRUSH);
pControlDC->Rectangle(0,0,10,10);
pWnd->ReleaseDC(pControlDC);
}


Или это я такой тупой?
Убери эти идиотские строчки, всё будет OK :)
PM MAIL   Вверх
Дима
Дата 29.11.2002, 20:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Blade!

Пример взят из книги Д.Д Круглински глава 6.

Твой код работает спасибо за помощь.
  Вверх
Blade
  Дата 30.11.2002, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 8.7.2002

Репутация: нет
Всего: нет



Да не за что  :)
PM MAIL   Вверх
Baa
Дата 30.11.2002, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Цитата(Blade @ 29.11.2002, 01:36)
Или это я такой тупой?
Убери эти идиотские строчки, всё будет OK :)

2 Blade:
Это он рисует на IDC_STATIC1
В частности:
//получаем указатель на IDC_STATIC1
CWnd* pWnd = GetDlgItem(IDC_STATIC1);
//А тут указатель на контекст этого окна
CDC* pControlDC = pWnd->GetDC();
//выставляем, чтобы при следующем WM_PAINT сие окно отрисовалось.
pWnd->Invalidate();
//Посылаем ему WM_PAINT
pWnd->UpdateWindow();
//Выбираем черную кисть
pControlDC->SelectStockObject(BLACK_BRUSH);
//и рисуем черный квадрат... прям Малевич
pControlDC->Rectangle(0,0,10,10);
//освобождаем контекст
pWnd->ReleaseDC(pControlDC);


Вот ток pWnd->Invalidate можно убрать...
з.ы. а у меня не мерцает %)


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Blade
Дата 30.11.2002, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 8.7.2002

Репутация: нет
Всего: нет



Цитата(Baa @ 29.11.2002, 23:05)
Вот ток pWnd->Invalidate можно убрать...
з.ы. а у меня не мерцает %)

Я про то и говорил. У нас ведь WM_PAINT отсылается каждый раз при перетаскиватие, перекрытие и т.д. окна, и Invalidate запускает OnPaint(), вот и получается что вся эта фигня просто циклится, т.е. окно обновляется не тольок при перетаскивание, но и во всё остальное время :)
P.S. А странная, какая-то книжка была... :)
PM MAIL   Вверх
Дима
Дата 1.12.2002, 03:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Blade!
Круглинский весьма известен по моему
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.