Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ абстрактный тип данных http://www.cyberforum.ru/cpp-beginners/thread329962.html
надо написать на С++... разработать абстрактный тип данных :двусвязный циклический список. атд должен обеспечивать выполнение следующих операций: 1)добавление элемента в список 2)удаление элемента из списка 3)редактирование элемента в списке 4)просмотр нескольких списков 5)объединение нескольких списков 6)определение количества элементов в списке написать демонстрационную программу с...
C++ Копирование строк с файла Есть прога которая находит наименьшее слово в файле(находит). #include <iostream> #include <fstream> #include <string> #include <sstream> #include <vcl.h> #pragma hdrstop #pragma argsused #include <iomanip> 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 's' was corrupted. Пример кода: #include <stdio.h> int main() { char s; scanf("%s",s); return 0;
C++ игра BlackJAck с использованием ООП
собственно вопрос: как написать игру блекджек используя классы С++? мне не нужен код чей либо, я не прошу писать за меня, я прошу натолкнуть на идею с чего начать ?
C++ Получить все символы,расположенные между первым и вторым двоеточием http://www.cyberforum.ru/cpp-beginners/thread329927.html
2.Известно что в исходной строке есть двоеточие.получить все символы,расположенные между первым и вторым двоеточием.если второго двоеточия нет,то получить все символы,расположенные после единственно имеющегося двоеточия. 3.работа с массивами. дана действительная квадратная матрица порядка n.Вычислить сумму тех из ее элементов,расположенных на побочной диагонали и выше нее,которые превосходят...
C++ оператора индексации+класс+структура Задача такая нужна создать словарь терминов. 1.Создаю свой тип данных помощью struct term (слово термин) definition (определение к термину) 2.Создаю класс Dictionary в классе 2 переменных string (термины и определение) size (размер динамического масива string) подробнее

Показать сообщение отдельно
jonson
 Аватар для jonson
231 / 204 / 61
Регистрация: 18.03.2010
Сообщений: 749
05.07.2011, 20:04     двойная буферизация
Здравствуйте. Ребят не сочтите за труд, помогите разобраться. Проблема собственно вот в чём:
Пишу тетрис, в окошке находится стакан с фигурами, а на фоне нужно чтобы была некая картинка.
Сначала всё сделал с выводом прямо на экран, но столкнулся с миганием окна.
Теперь пробую через двойную буферизацию, но, после показа первого расположения падающей фигурки экран совсем не меняется.
Вот код прорисовки:
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;, то всё работает отлично, не мигая, но на чёрном фоне! что не есть хорошо.
Не могу понять почему не обновляется экран когда подгружаю фоновую картинку?
Миниатюры
двойная буферизация   двойная буферизация  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru