Конференция "Media" » Как у 32bit'ных битмапов указывать/указывается RGBA они или XRGB? [D7, WinXP]
 
  • Зодчий (04.07.18 06:44) [20]
    Описание GetObject():
    * Если функция завершается с ошибкой, величина возвращаемого значения - ноль.
    * Чтобы получить дополнительные сведения об ошибке, вызовите GetLastError.

    Но по факту эта гадина LastError не устанавливает вообще!
    А я блин долго гадал какой-такой "Не удается найти указанный файл" ищет GetObject()..!
    Дошло что происходит только когда словил от GetObject() ошибку "Указанный тег не найден".

    Но стало довольно любопытно, когда выяснилось что "Не удается найти указанный файл" и "Указанный тег не найден" ставил CreateDIBSection(), да ещё и при успехе... В зависимости от заполнения tagBITMAPINFO.
    Что-то оно там пытается cделать, но оно явно не доделано и брошено. Да и сама ОС как-то же понимает хотя бы порядок строк? Допустим альфу исторически игнорирует, но порядок строк-то она не путает! Значит где-то же хранит?
  • invis © (04.07.18 21:30) [21]
    Попробуй GetDIBits с указателем на bits=nil и смотри структуру BITMAPINFO.

    Вообще с чистым GDI работать действительно муторно. Проще использовать класс-контейнер для битмапа, а если нужно передать в DLL, можно слепить простенькую структуру вроде [указатель, высота, ширина, глубина].
  • K-1000 © (16.07.18 20:50) [22]
  • имя (04.09.18 13:15) [23]
    Удалено модератором
  • Сапёр (11.01.19 08:17) [24]
    Это только проверять вручную. Задать пиксель через API и анализировать где изменилось в памяти.
 
Конференция "Media" » Как у 32bit'ных битмапов указывать/указывается RGBA они или XRGB? [D7, WinXP]
Есть новые Нет новых   [118638   +31][b:0][p:0]