Как Работать С Dib Битмэпами Для Windows Ce 6.0

15.05.2013
6
0
#1
Здравствуйте все!

Пишу программу которая должна работать на Win32 и WinCE
Два разных проекта но они используют общие модули и общие функции
код различаю с помощью #ifdef UNDER_CE .....
Для разработки Visual Studio 2008


Мне надо отображать прозрачные и масштабируемые картинки из ресурсов и из файлов BMP
Из ресурсов получается просто:

hBitmap=LoadBitmap(hInst, MAKEINTRESOURCE(ID_BITMAP.....));//загружаю из ресурса
......
и когда дело дошло до рисования:
hmdc=CreateCompatibleDC(hdc); //Создаёт совместимый с оконным контекст памяти
SelectObject(hmdc, hBitmap); //Выбирает объект картинку
GetObject(hBitmap, sizeof(bm), (LPSTR) &bm); //получаем высоту и ширину картинки


#ifdef UNDER_CE
TransparentBlt(hdc,r.left,r.top,r.right-r.left,r.bottom-r.top,hmdc,0,0,bm.bmWidth,bm.bmHeight,0x00FFFFFF);//благо этот макрос в CE проекте определен
#else
McTransparentBlt(hdc,r.left,r.top,r.right-r.left,r.bottom-r.top,hmdc,0,0,bm.bmWidth,bm.bmHeight,0x00FFFFFF);//а для win32 пришлось отдельную функцию заимствовать
#endif
DeleteDC(hmdc); //удаляем из памяти контекст


Как сделать тоже самое но для картинки из файла (картинка безпалитровая 24бита на пиксель)и именно для WinCE
Для Win32 тоже получается просто так как существует LoadImage(... LR_LOADFROMFILE ...)

А ДЛЯ WinCE определения LR_LOADFROMFILE - НЕТ!

Я попытался решить эту проблему чтением DIB из файла и преобразованием в DDB
НО оказывается функции CreateDIBitmap() в WinCE - НЕТ !!!!!
Хотя есть CreateDIBSection() Но что толку..
Как проинициализировать биты изображения Функции SetDIBits - тоже НЕТ!

Что делать:??? при помощи SetPixel что ли рисовать

Забыл сказать использую только чистый Windows API

помогите...