2015-12-23 6 views
0

Я хочу создать второе независимое окно с использованием C++/wxWidgets, и я получаю сообщение об ошибке «не может создать окно класса wxWindowNR» во время выполнения, а второе окно не отображается. Нет ошибок компилятора/компоновщика.Невозможно создать окно класса wxWindowNR

Код-нарушителем является:

void test_gui(){ 
    ActorDetails *ac = new ActorDetails(wxGetApp().GetTopWindow(),wxID_ANY,wxDefaultPosition,wxDefaultSize); //ActorDetails inherits wxFrame 
    wxPanel *Panel1 = new wxPanel(ac, wxNewId(), wxPoint(256,224), wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL1")); 
    ac->Show(true); 
} 

Любая идея, что происходит/неправильно?

+0

В коде, который вы показываете, нет ничего плохого, поэтому в коде, который вы не видите, должно быть что-то не так, а именно 'ActorDetails' ctor. –

ответ

0

замена

ActorDetails *ac = new ActorDetails(wxGetApp().GetTopWindow(),wxID_ANY,wxDefaultPosition,wxDefaultSize); 

с

ActorDetails *ac = new ActorDetails(); 
ac->Create(wxGetApp().GetTopWindow(), wxNewId(), _("Existenz Console"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("id")); 

теперь производит окно, как ожидалось. К сожалению, я не знаю, какая разница, но второй вариант кода успешно создает экземпляр и показывает второй wxFrame.

Это, конечно, требовало добавления нового пустого конструктора без конструктора параметров в класс ActorDetails (не показано здесь).

1

У меня было такое же сообщение об ошибке сегодня. Скорее всего, вы забыли вызвать конструктор wxFrame из своего конструктора ActorDetails.

Смежные вопросы