Привет.
integer wrote:
Использую пример "printing". При печати вылетает исключение:
Code: Select all
First-chance exception at 0x77c12c62 in printing.exe: 0xC0000005: Access violation reading location 0x00000004.
First-chance exception at 0x7c81eb33 in printing.exe: Microsoft C++ exception: __non_rtti_object at memory location 0x0012e434..
Исключение происходит при вызове dc->EndPage(), а именно
Code: Select all
void wxPrinterDC::EndPage()
{
if (m_hDC)
::EndPage((HDC) m_hDC); // вот здесь
}
Как избавиться от этой ошибки?
В смысле, что используешь пример как есть без всяких изменений и выдает эту ошибку? Странно... Может, все таки, что-то изменил?
А какая версия WX? Компилер, я вижу, от MS, какой версии? Ну и, заодно, что за билд (static/shared, debug/release, unicode)?
integer wrote:
И еще вопрос, раз распечатать мне пока не удается, то есть ли способ передать содержимое wxDC в wxImage, чтоб сохранить его в файл?
Ну это не проблема, типа так:
Code: Select all
wxBitmap* wxChartBase::CreateBitmap(double mx, double my)
{
// mx, my - просто коэффициенты масштабирования
wxSize s = GetSize(); // Это реальный размер объекта
s.x = (int)(mx*s.x); s.y = (int)(my*s.y);
wxBitmap* bitmap = new wxBitmap(s.x, s.y);
wxMemoryDC mdc;
mdc.SelectObject(*bitmap);
// Draw Chart
DoDrawing(&mdc); // собственно здесь рисуем, как в обычный DC
return bitmap;
}