Ошибка при печати

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
integer
Earned a small fee
Earned a small fee
Posts: 11
Joined: Fri Dec 04, 2009 5:41 pm

Ошибка при печати

Post by integer » Fri Apr 30, 2010 2:43 pm

Привет.

Использую пример "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); // вот здесь
}
Как избавиться от этой ошибки?
И еще вопрос, раз распечатать мне пока не удается, то есть ли способ передать содержимое wxDC в wxImage, чтоб сохранить его в файл?

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Re: Ошибка при печати

Post by tan » Fri Apr 30, 2010 3:40 pm

Привет.
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;
}
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

integer
Earned a small fee
Earned a small fee
Posts: 11
Joined: Fri Dec 04, 2009 5:41 pm

Post by integer » Sat May 01, 2010 10:34 am

Благодарю за быстрый ответ!

wxWidgets - wxMSW-2.8.10
Среда MS Visual C++9.0 Express
Сам компилятор, как я понимаю, Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0

В примере ничего не менял, даже специально вытащил оригинал из архива, запустил и убедился в ошибке.
Билд static, пробовал debug и release, unicode и ansi, (скомпилированы с опцией /MT) - никакой разницы нет.

Ну и еще, настоящего принтера у меня нет, вместо него MS Office Document Image Writer, который сохраняет печать в файл tiff, но, так думаю, дело не в нем.

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan » Sat May 01, 2010 1:14 pm

integer wrote:Благодарю за быстрый ответ!

wxWidgets - wxMSW-2.8.10
Среда MS Visual C++9.0 Express
Сам компилятор, как я понимаю, Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0

В примере ничего не менял, даже специально вытащил оригинал из архива, запустил и убедился в ошибке.
Билд static, пробовал debug и release, unicode и ansi, (скомпилированы с опцией /MT) - никакой разницы нет.

Ну и еще, настоящего принтера у меня нет, вместо него MS Office Document Image Writer, который сохраняет печать в файл tiff, но, так думаю, дело не в нем.
ОК, у меня дома абсолютно такая же конфигурация, только Image Writer не было. Установил, попробовал - все нормально, никаких проблем (только unicode не пробовал). Так что, скорее всего, проблема в вашей системе, другое предположить трудно. Кстати, операционка какая? Я на XP пробовал.
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

integer
Earned a small fee
Earned a small fee
Posts: 11
Joined: Fri Dec 04, 2009 5:41 pm

Post by integer » Sat May 01, 2010 3:44 pm

Тоже XP, но, видимо, что-то где-то как-то не так. Наверное стоит на других компах свои программки попробовать.

Post Reply