Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> winapi game on vc++ 
:(
    Опции темы
Serzh
Дата 13.12.2003, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



скорее всего глупый вопрос и неоднократно задаваемый.
заранее прошу не посылать. smile.gif

в ресурсах есть BMP'хи - используются, как спрайты
maskblt - выводит их на форму

вобщим и усе. но изоброжение все моргает, по этому надо использовать память и туда прорисовывать все объекты. а потом всю эту память на форму загнать.

вот этого я и не знаю.
заранее спасибо. и если можно исходник или кусок кода.

PM MAIL WWW ICQ   Вверх
Step
Дата 14.12.2003, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



тебе надо исползовать проекцию файла в память и юзать функции
CreateFileMapping
MapViewOfFile


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Ars
Дата 15.12.2003, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

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



Нужно создать контекст в памяти с помощью СreateCompatibleDC, выбрать в нем битмапу соответствующего размера, нарисовать все, что нужно , а потом вывести в окно (BitBlt).


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
Serzh
Дата 15.12.2003, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



мдя...
ни чего не понял, если можно, дайте примерчики.
заранее спасибо.
PM MAIL WWW ICQ   Вверх
Step
Дата 15.12.2003, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Код
HANDLE hFile=::CreateFile(strPathname,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING, FILEATTRIBUTE_NORMAL,NULL);

HANDLE hMap=::CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);
LPVOID lpvFile=::MapViewOfFile(hMap,FILE_MAP_READ,0,0,0);
DWORD dwFileSize=::GetFileSize(hFile,NULL);


После этого вы работаете с проекцией файла


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Ars
Дата 15.12.2003, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

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



Step, и чего он с этим добром будет делать? Ему надо рисовать в памяти API-шными функциями. Рисовать можно в контексте. Контекст надо получить с помощью функции CreateCompatibleDC. Полученный контекст нужно снабдить битмапом размера окна, т.к. свой битмап у вновьсозданного контекста очень маленький (1х1). Для этого создаем битмап (любым способом, например, CreateCompatibleBitmap). Выбираем созданный битмап в созданный же контекст (SelectObject). Рисуем в контексте все что нужно обычным способом. Копируем нарисованное из нашего контекста в контекст окна ф-цией BitBlt. И так каждый кадр.


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
Step
Дата 15.12.2003, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Ars, зачем ему контекст совместимый, если он может спроецировать ресурс в память и мигание прекратится


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Ars
Дата 15.12.2003, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

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



Цитата
Ars, зачем ему контекст совместимый, если он может спроецировать ресурс в память и мигание прекратится

Ну, я так понимаю, мигает изображение при перерисовывании окна. А ресурс - он и так в памяти...


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
knave
Дата 15.12.2003, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ars Прав. ту надо елать контескт памяти совместимый с конеткстом окна. Все внем рисовать а потом перетаскивать в окно BitBlt.
См CreateCompatibleDC CreateCompatibleBitmap
Работа с контекстом памяти такая же как и с контекстом окна, черзез апи функции. Так что тебе в твоей проге особо и переделывать ничего не придется, просто нужно перенаправить весь вывод не на НDC окна а на НDC твоего контескта памяти. А когда ты выведеш весь кадр тебе надо его при помощи BitBlt перенести (скопировать) в контекст окна.


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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