C/C++

Работа с графикой в Visual C++ 6

Помогите начинающему... есть несколько книжек но нигде не могу найти именно то что мне надо, а то курсовую писать, не знаю как
1. Есть ли какие-либо функции чтения графических изображений? Например .bmp? И хоть бы небольшой пример с их работой. Т.е. у меня в файле машинка например нарисована. Хочу чтобы кликая на экране где-то эта машинка рисовалась туда.
2. При работе с мышкой возникли трудности. В Функции OnLButtonDown есть вызов другой функции которая в текущие координаты мышки рисует крест, с помощью MoveTo LineTo. При первом нажатии клавиши - крест появляется. но при последующих - нет! Нашёл одну функцию Invalidate(TRUE); которая перерисовывает экран. При добавлении её в начало функции OnLButtonDown - предыдущие кресты исчезают - но новые зато появляются! Как сделать чтобы всё работало стабильно без перерисовывания экрана?
И ещё:
3. Можно ли как-либо снимать координаты курсора когда нажат и зажат левая кнопка мыши для примера? Напримере той машинки, т.е. я нажал на левую кнопку и передвигаю ею по экрану и соответсвенно машинка должна рисоватся во все положения мыши.
4. Как можно записать в переменную код нажатой клавиши?
5. Нужна функция аналог паскалевской delay(). Да да.. та которая устанавливает задержку в миллисекундах.
3. WM_MOUSEMOVE (OnMouseMove)
4. WM_KEYDOWN (OnKeyDown)
5. Sleep(ms). Не только ждет, но и отдает управление, чтобы не жрать напрасно процессорное время.
Сообщение от 4elove4ek
Invalidate(TRUE); которая перерисовывает экран. При добавлении её в начало функции OnLButtonDown - предыдущие кресты исчезают - но новые зато появляются! Как сделать чтобы всё работало стабильно без перерисовывания экрана?
Инвалидировать надо только ту область, в которой ты рисуешь (InvalidateRect | InvalidateRgn).
Сообщение от 4elove4ek
1. Есть ли какие-либо функции чтения графических изображений? Например .bmp?
??? А зачем нужны такие функции? Открываешь файл как бинарный - и ты хозяин положения (поищи в инете инфу по структуре BMP). А лучше хранить картинку не в файле, а в ресурсах проги. Ну, а дальше - GetDIBits/SetDIBits.
Я вывожу изображение как описал SERAFIM в одном из топиков:
"CBitmap bm;
bm.LoadBitmap(IDB_BITMAP1);
CClientDC client(this);
CDC mem;
mem.CreateCompatibleDC(&client);
mem.SelectObject(&bm);
client->BitBlt(xКуда,
yКуда,
ШиринаКартинкиПоХ,
ШиринаКартинкиПоY,
&mem,
хВКартинке,
YвКартинке,
SRCCOPY);
например: client->BitBlt(50,50,32,32,&mem,0,0,SRCCOPY);"
НО изображение очень сильно мерцает. Можно ли от этого как-то избавится? Частота обновления изображения ( я его обновляю каждый раз при срабатывании таймера - частота 25 )
Сообщение от ^4elove4ek^
bm.LoadBitmap(IDB_BITMAP1);
Согласно документации Microsoft, LoadBitmap устарела и пользоваться ей не рекомендуется (о будущем-то надо думать...) LoadImage.
Я тут почитал, оказывается надо рисовать в виртуальный контекст устройства. А потом всё махом перекидывать в основной. Подскажите как это сделать?
Информация взята из http://subscribe.ru/archive/comp.pro.../19074820.html