![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Нашёл кучу информации о том, как выглядит bmp в файле на диске. Но нигде не сказано, каков он в памяти после, например, LoadImage?
Сначала подумал, что HBITMAP должен указывать на BITMAP. Проверил с помощью CopyMemory. Непохоже. Непохоже и на BITMAPINFOHEADER. И уж тем более непохоже на BITMAPFILEHEADER. Уважаемые, заранее благодарен |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
handle to the bitmap. Это не указатель а хендл, т.е. подобное хендлу любого окна виндов -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Ты уж прости, но либо я не понял ответа, либо ты не понял вопроса.
Всегда считал, что хэндл (который определен как void *) это и есть указатель. Меня интересует, что я найду в тех байтах памяти, на которые указывает HBITMAP. Что там будет? Структура какая-то, которая описывает картинку? Вряд ли ведь сразу массив байтов картинки? |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
Я не совсем понял дефайн, но как я понял что хендл идет указатель на структуру, а структуре целое число! число указывает номер в хендлах зарегестрерованых в системе, имхо Имхо смысла ковырятся в хендлах нету описана выше -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Да мне не сам хендл был нужен, а картинка, которая за ним в памяти лежит, но не через HBITMAP, а побайтово. В API для этого есть GetDIBits, SetDIBits и CreateDIBSection, но там уж больно много структур, сжатия и всего прочего. Есть еще вариант работать с картинкой, скидывая ее во временный файл на диск, а это хоть медленнее, но проще.
Ладно, закрыли тему. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
Чем не нравится? Ну так и закрывай -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Есть ф-ция GetBitmapBits - то что тебе нужно.
|
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Спасибо, Fixin
|
|||
|
||||
| adonin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 16.12.2005 Где: Новочеркасск Рост овская обл. Репутация: 2 Всего: 5 |
Хотя тема и закрыта, считаю необходимым развеять приведённое выше заблуждение. HANDLE объекта это не указатель на объект, а его идентификатор. Так HANDLE файла - это id объекта FILE_OBJECT, с которым оперирует ядро. Коду 3-го кольца привилегий прямой доступ туда не желателен. Поэтому приложению возвращают не указатель (POINTER), а описатель (HANDLE). Имея описатель объекта, ядро находит объект в списке объектов и производит над ним требуемые действия. HANDLE HBITMAP не есть указатель на объект. --------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР) |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Тему никогда не поздно открыть опять.
Видимо, я превратно понял мысль П.В. Получается, не используя специальные функции типа GetDIBits, я не могу найти, где в памяти хранятся байты битмапа и связанные с ними структуры? "Найти"="узнать начальный адрес и размер". |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Ну да. в этом суть безопасности ядра системы, чтобы ты не записал куда-нибудь что-нибудь, а в результате вся система накрылась.
Добавлено @ 13:53 Они вынимают из дескриптора адрес (в данном случае) |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Ладно, с хбитмапом более-менее ясно. Тем более, что я всё равно решил работать с картинкой не в памяти, а сбрасывать ее во временный промежуточный файл, а оттуда уже читать.
Fixin, скажи, а кто такой шушпанчик? |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |