![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Дима |
|
|||
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 |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Можно попытаться ускорить вывод графики. Если в двух слова, то вывести рисунок в память а потом уже отображать.
|
|||
|
||||
Observer |
|
|||
Unregistered |
По-моему не хватает device-context objects в начале
|
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Blade |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 8.7.2002 Репутация: нет Всего: нет |
А что это за чушь ![]()
Или это я такой тупой? Убери эти идиотские строчки, всё будет OK ![]() |
||||
|
|||||
Дима |
|
|||
Unregistered |
Blade!
Пример взят из книги Д.Д Круглински глава 6. Твой код работает спасибо за помощь. |
|||
|
||||
Blade |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 8.7.2002 Репутация: нет Всего: нет |
Да не за что
![]() |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
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 |
|||
|
||||
Blade |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 8.7.2002 Репутация: нет Всего: нет |
Я про то и говорил. У нас ведь WM_PAINT отсылается каждый раз при перетаскиватие, перекрытие и т.д. окна, и Invalidate запускает OnPaint(), вот и получается что вся эта фигня просто циклится, т.е. окно обновляется не тольок при перетаскивание, но и во всё остальное время ![]() P.S. А странная, какая-то книжка была... ![]() |
|||
|
||||
Дима |
|
|||
Unregistered |
Blade!
Круглинский весьма известен по моему |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |