Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Убрать мерцание при изменении размеров окна, как убрать мерцание 
:(
    Опции темы
BFS
Дата 29.10.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Слышал, что такое исправляется переопределением OnEraseBkgnd, но каким образом..? Там явно недостаточно лишь того, что она будет возвращать значение true. Подскажите, как всё сделать, чтобы было красиво smile

Это сообщение отредактировал(а) BFS - 29.10.2007, 16:26
PM MAIL   Вверх
zkv
Дата 29.10.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

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



так а что ты в окне этом делаешь? Если с битмапами возишься, то двойную буфферизацию организуй.
PM MAIL   Вверх
BFS
Дата 29.10.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



zkv, нет не с битмапами. только их там и нет ) 

Код


void CLastView::OnDraw(CDC* pDC)
{
    CLastDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    // TODO: add draw code for native data here
    CFigure *PFigure, *PFigure2;

    CClientDC ClientDC (this);
    int NumFigs = pDoc->GetNumFigs ();


    CRect ClipRect;
    CRect IntRect;
    CRect DimRect;

    pDC->GetClipBox (&ClipRect);

    for (int Index = 0; Index < NumFigs; ++Index)
    {
        if ((Index != CurrentRect)&&(Index != CurrentRect2))
        {
            PFigure = pDoc->GetFigure (Index);
            DimRect = PFigure->GetKonturRect ();
            if (IntRect.IntersectRect (DimRect, ClipRect))
            PFigure->Draw (pDC, PS_SOLID);
        }
    }
}


Когда я изменяю размер окна(например перетаскивая правый нижний край моего окна), то GetClipBox всё-равно считает, что обновлять нужно ВСЁ окно! вот с этим я хочу бороться, а так из-за наслоения фигур мерцания видны. Вот ты поробуй поизменять размеры окна (с кодом) в 2005-ой Вижле smile 
PM MAIL   Вверх
zkv
Дата 29.10.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

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



Цитата(BFS @  29.10.2007,  16:32 Найти цитируемый пост)
Вот ты поробуй поизменять размеры окна (с кодом) в 2005-ой Вижле

спасибо, воздержусь, и так представляю.

Поищи на codeproject.com класс CMemDC - должен помочь тебе.
PM MAIL   Вверх
SergeCpp
Дата 29.10.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

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



CS_VREDRAW и CS_HREDRAW убраны из класса окна?

Вот примерно так (это из этой вот программы)

Код
BOOL LifeView::PreCreateWindow( CREATESTRUCT& CreateStruct )
{
    if( !CScrollView::PreCreateWindow( CreateStruct ) )
    {
        return FALSE;
    }

static const char( * s_pLifeViewClass )( NULL );

    if( !s_pLifeViewClass )
    {
        WNDCLASSEX wcx = { sizeof( WNDCLASSEX ) };

        ::GetClassInfoEx( ::GetModuleHandle( NULL ), CreateStruct.lpszClass, &wcx );

        wcx.lpszClassName  = "LifeViewClass";
        wcx.hbrBackground  =  NULL;
        wcx.style         &= ~CS_DBLCLKS;
        wcx.style         |=  CS_OWNDC;

        ::RegisterClassEx  ( &wcx );
        s_pLifeViewClass   =  wcx.lpszClassName;
    }

    CreateStruct.lpszClass = s_pLifeViewClass;

    return TRUE;
}



Это сообщение отредактировал(а) SergeCpp - 29.10.2007, 17:23
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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