Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Проблема записи в архив битмапа


Автор: pablo 11.8.2005, 16:23
есть код:

Код

CBitmap bitmap;
CAcModuleResourceOverride roModule;

BOOL result = bitmap.LoadBitmap(IDB_ANALYSIS_CONSTANT_ELASTICITY);
   
CFile myFile("D:\\test_bitmap.bmp", CFile::modeCreate | CFile::modeReadWrite);

         // Create a storing archive.
CArchive arStore(&myFile, CArchive::store);

          // Write the object to the archive
arStore.WriteObject(&bitmap);
         // Close the storing archive
         arStore.Close();

проблема заключается в следующем, надо както записать картинку в архив, но при записи всегда проижодит вот что:

вылетает сообщение о том что неперехвачено исключение, и программа заканчивает работу.

Может кто знает в чём может быть проблема, и как её исправить

Заранее благодарен smile

Автор: Denn 12.8.2005, 09:24
Отлови Exception и посмотри о чем он говорит.

Автор: JoyEx 12.8.2005, 09:58
Поможет CFile::typeBinary

Автор: Earnest 15.8.2005, 19:44
Не поможет. Посмотри в коде MFC, что делает эта строка:
Код

arStore.WriteObject(&bitmap);

А ничего умного она не делает: пишет всякую предварительную ерунду, идентифтицирующую класс объекта, а потом вызывает для объекта виртуальную функцию Serialize, которая по-умолчанию пустая, разумеется, и для bitmap не переопределена.
Вряд ли ты вместе с bitmap в файл будешь пихать другие объекты. Поэтому выкинь нафиг архив и пиши сам, ручками, прямо в файл - но сначала придется разобраться, как устроен bmp-файл.

Автор: Nastya 16.8.2005, 10:14
Или сделать обертку для битмапа, где эту функцию перегрузить. Вдруг человек сохранеет не только битмап и ему все это нужно в одном файле.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)