Пример wxWidgets Wizard

Полный код — более 400 строк. Вы можете найти это здесь: http://hostcode.sourceforge.net/view/4122 или если у вас установлены wxwidgets, то под WX_WIDGETS_ROOT \ Samples \ Мастер \ wizard.cpp.

Я пытался скомпилировать, но получить
«ошибка C2065:« m_bitmap »: необъявленный идентификатор» в строке 122.

Затем я прокомментировал эту строку, и она компилируется нормально. Но когда я запускаю его и выбираю одну из этих команд меню:

  • Файл >> Запустить мастер модал
  • Файл >> Запустить мастер без sizer
  • Файл >>
    Запустите мастер без режима

он переходит к конструктору MyWizard и вылетает в строке m_page1 = new ….

MyWizard::MyWizard(wxFrame *frame, bool useSizer)
: wxWizard(frame,wxID_ANY,_T("Absolutely Useless Wizard"),
wxBitmap(wiztest_xpm),wxDefaultPosition,
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
{
// a wizard page may be either an object of predefined class
m_page1 = new wxWizardPageSimple(this);<---------------- HERE

и дал эту ошибку:

Необработанное исключение в 0x004425ec в wizard.exe: 0xC0000005: Доступ
нарушение чтения местоположения 0xcdcdcdd1.

Я проверил в отладчике и увидел, что он идет к

void wxWizardPage::Init()
{
m_bitmap = wxNullBitmap;<--- HERE
}

и затем несколько внутренних вызовов позже, пытаясь получить доступ к m_refData-> m_count, где m_refData содержит мусор m_refData = 0xcdcdcdcd {m_count = ??? } а затем разбился.

void wxObject::UnRef()
{
if ( m_refData )
{
wxASSERT_MSG( m_refData->m_count > 0, _T("invalid ref data count") );<----- HERE

if ( --m_refData->m_count == 0 )
delete m_refData;
m_refData = NULL;
}
}

Вот стек вызовов, если он будет полезен:

wizard.exe! wxObject :: UnRef () Строка 346 + 0x6 байт C ++
wizard.exe! wxObject :: Ref (const wxObject & клон) Line 335 C ++
wizard.exe! wxObject :: operator = (const wxObject & другое) Линия 428 С ++
wizard.exe! wxGDIObject :: operator = (const wxGDIObject & __that) + 0x13
байты C ++ wizard.exe! wxGDIImage :: operator = (const wxGDIImage &
__that) + 0x13 байт C ++ wizard.exe! wxBitmap :: operator = (const wxBitmap & __that) + 0x13 байт C ++

wizard.exe! wxWizardPage :: Init () Строка 126 C ++ wizard.exe! wxWizardPage :: wxWizardPage () Строка 50 + 0x46 байт C ++
wizard.exe! wxWizardPageSimple :: wxWizardPageSimple (wxWizard * parent,
wxWizardPage * prev, wxWizardPage * next, const wxBitmap & битовая карта,
const char * resource) Строка 113 + 0x2e байт C ++
wizard.exe! MyWizard :: MyWizard (wxFrame * frame, bool useSizer) Строка
376 + 0x31 байт C ++

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]