wxImage в ZIP-файл через поток. Возможно?

Я пытаюсь записать zip-файл, используя wxZipOutputStream. Код взят с этого форума и работает с файлом xml (когда я использовал wxTextOutputStream). Теперь я пытаюсь включить файл изображения, но функция SaveFile в классе wxImage ожидает класс wxOutputStream, но wxTextOutputStream/wxDataOutputStream не имеют базового класса, поэтому я не могу его скомпилировать. Я просто хочу записать wxImage и файл xml в почтовый индекс. как мне это сделать?

//convert stream to zip file. 
wxFFileOutputStream out(m_loaded_filename.GetFullPath()); 
wxZipOutputStream zip(out); 
//  wxTextOutputStream txt(zip); 
wxDataOutputStream txt(zip); 


zip.PutNextEntry("my.xml"); 
txt << xmltext; 
... 
... 
... 

//value is wxImage* 
//key is wxString 
zip.PutNextEntry(key); //filename 
if(value->IsOk()) 
{ 
   value->SaveFile(zip); //compiler throws error. 
} 

person Memb    schedule 27.11.2009    source источник
comment
Как обычно, было бы полезно, если бы вы сообщили нам фактическую ошибку.   -  person MSalters    schedule 27.11.2009
comment
Что касается ожидаемого класса wxOutputStream, но wxTextOutputStream/wxDataOutputStream не имеют базового класса - это хорошо. Имена выбраны неудачно, что вводит вас в заблуждение. Однако наследование хорошее: они действительно не являются типами wxOutputStream. Следовательно, вы не можете использовать их в SaveFile(), что правильно.   -  person MSalters    schedule 27.11.2009


Ответы (2)


похоже, что вам нужно указать тип изображения в архиве, попробуйте :

value->SaveFile(zip, wxBITMAP_TYPE_PNG)

(Расширение файла в key должно быть, конечно, .png)

person Andreas Brinck    schedule 27.11.2009

Работает ли приведение типов:

значение->СохранитьФайл((wxOutputStream&)zip);

person Priyank Bolia    schedule 27.11.2009
comment
Даже если бы это было так, не надо. Уточните, пожалуйста, какое приведение C++ вы имеете в виду. Это static_cast<> или reinterpret_cast<>? - person MSalters; 27.11.2009