Форум программистов, компьютерный форум, киберфорум
Наши страницы

двойная буферизация - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ абстрактный тип данных http://www.cyberforum.ru/cpp-beginners/thread329962.html
надо написать на С++... разработать абстрактный тип данных :двусвязный циклический список. атд должен обеспечивать выполнение следующих операций: 1)добавление элемента в список 2)удаление...
C++ Копирование строк с файла Есть прога которая находит наименьшее слово в файле(находит). #include <iostream> #include <fstream> #include <string> #include <sstream> #include <vcl.h> #pragma hdrstop #pragma argsused... http://www.cyberforum.ru/cpp-beginners/thread329960.html
Stack around the variable 's' was corrupted C++
Помогите разобраться! Не пойму почему иногда при использовании в программе переменных char при закрытии программы выскакует одна и та же ошибка: Run-Time Check Failure #2 - Stack around the variable...
C++ игра BlackJAck с использованием ООП
собственно вопрос: как написать игру блекджек используя классы С++? мне не нужен код чей либо, я не прошу писать за меня, я прошу натолкнуть на идею с чего начать ?
C++ Получить все символы,расположенные между первым и вторым двоеточием http://www.cyberforum.ru/cpp-beginners/thread329927.html
2.Известно что в исходной строке есть двоеточие.получить все символы,расположенные между первым и вторым двоеточием.если второго двоеточия нет,то получить все символы,расположенные после единственно...
C++ оператора индексации+класс+структура Задача такая нужна создать словарь терминов. 1.Создаю свой тип данных помощью struct term (слово термин) definition (определение к термину) 2.Создаю класс Dictionary в классе 2 переменных ... подробнее

Показать сообщение отдельно
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750

двойная буферизация - C++

05.07.2011, 20:04. Просмотров 3094. Ответов 8
Метки (Все метки)

Здравствуйте. Ребят не сочтите за труд, помогите разобраться. Проблема собственно вот в чём:
Пишу тетрис, в окошке находится стакан с фигурами, а на фоне нужно чтобы была некая картинка.
Сначала всё сделал с выводом прямо на экран, но столкнулся с миганием окна.
Теперь пробую через двойную буферизацию, но, после показа первого расположения падающей фигурки экран совсем не меняется.
Вот код прорисовки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
case WM_CREATE:
        space_bmp = LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP1));
        break;
 
 
case WM_PAINT:
    {
        RECT rect;
        GetClientRect(main_hWnd,&rect);
        HBITMAP hMemBmp;
            
        hdc =  BeginPaint (main_hWnd,&ps);
        memdc = ::CreateCompatibleDC(hdc); // создаю контекст в памяти
        hMemBmp = CreateCompatibleBitmap(hdc, // совместимый битмап
                GetDeviceCaps(hdc, HORZRES), 
                GetDeviceCaps(hdc, VERTRES));
            
    // дальше нужно чтобы совместимый битмап в памяти содержал моё изображение  space_bmp
    // чтобы потом уже на нём прорисовывать
        hMemBmp = space_bmp;
 
        ::SelectObject(memdc,hMemBmp); // контекст в памяти получает совместимый битмап
        
        
        // .......
        // ....... здесь выполняю перерисовку стакана. Всё рисую в memdc
        // ....... 
 
    // теперь вывожу на экран
    BitBlt(hdc, 0, 0, GetDeviceCaps(hdc, HORZRES), GetDeviceCaps(hdc, VERTRES), memdc, 0,0, SRCCOPY);
        
    DeleteObject(hMemBmp);
    DeleteDC(memdc);
    EndPaint(hWnd, &ps);
    break;  
    }
Если закоментировать строку 20 hMemBmp = space_bmp;, то всё работает отлично, не мигая, но на чёрном фоне! что не есть хорошо.
Не могу понять почему не обновляется экран когда подгружаю фоновую картинку?
0
Миниатюры
двойная буферизация   двойная буферизация  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.