Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > winapi game on vc++ |
Автор: Serzh 13.12.2003, 02:45 |
скорее всего глупый вопрос и неоднократно задаваемый. заранее прошу не посылать. ![]() в ресурсах есть BMP'хи - используются, как спрайты maskblt - выводит их на форму вобщим и усе. но изоброжение все моргает, по этому надо использовать память и туда прорисовывать все объекты. а потом всю эту память на форму загнать. вот этого я и не знаю. заранее спасибо. и если можно исходник или кусок кода. |
Автор: Step 14.12.2003, 00:38 |
тебе надо исползовать проекцию файла в память и юзать функции CreateFileMapping MapViewOfFile |
Автор: Ars 15.12.2003, 10:53 |
Нужно создать контекст в памяти с помощью СreateCompatibleDC, выбрать в нем битмапу соответствующего размера, нарисовать все, что нужно , а потом вывести в окно (BitBlt). |
Автор: Serzh 15.12.2003, 11:13 |
мдя... ни чего не понял, если можно, дайте примерчики. заранее спасибо. |
Автор: Step 15.12.2003, 12:21 | ||
После этого вы работаете с проекцией файла |
Автор: Ars 15.12.2003, 13:06 |
Step, и чего он с этим добром будет делать? Ему надо рисовать в памяти API-шными функциями. Рисовать можно в контексте. Контекст надо получить с помощью функции CreateCompatibleDC. Полученный контекст нужно снабдить битмапом размера окна, т.к. свой битмап у вновьсозданного контекста очень маленький (1х1). Для этого создаем битмап (любым способом, например, CreateCompatibleBitmap). Выбираем созданный битмап в созданный же контекст (SelectObject). Рисуем в контексте все что нужно обычным способом. Копируем нарисованное из нашего контекста в контекст окна ф-цией BitBlt. И так каждый кадр. |
Автор: Step 15.12.2003, 13:15 |
Ars, зачем ему контекст совместимый, если он может спроецировать ресурс в память и мигание прекратится |
Автор: Ars 15.12.2003, 13:26 | ||
Ну, я так понимаю, мигает изображение при перерисовывании окна. А ресурс - он и так в памяти... |
Автор: knave 15.12.2003, 13:58 |
Ars Прав. ту надо елать контескт памяти совместимый с конеткстом окна. Все внем рисовать а потом перетаскивать в окно BitBlt. См CreateCompatibleDC CreateCompatibleBitmap Работа с контекстом памяти такая же как и с контекстом окна, черзез апи функции. Так что тебе в твоей проге особо и переделывать ничего не придется, просто нужно перенаправить весь вывод не на НDC окна а на НDC твоего контескта памяти. А когда ты выведеш весь кадр тебе надо его при помощи BitBlt перенести (скопировать) в контекст окна. |