Вы не показываете, как вы создаете и показываете AutoPokemonDlg
, но если вы делаете это в стеке, как рекомендуется, например, так:
void SomeEventHandler(wxEvent&) {
AutoPokemonDlg dialog(...);
dialog.ShowModal();
}
, тогда ваш код приведет к вызову delete &dialog
, что явно неверно, так как это не указатель кучи. Это происходит потому, что вы вызываете Destroy()
из вашего обработчика OnCloseWindow()
- по этой причине его нельзя использовать для модальных диалогов.
Самое простое решение - просто полностью удалить обработчик OnCloseWindow()
, обычно это не нужно, так как диалог все равно закрывается, если у него есть какие-либо кнопки, которые можно использовать для его закрытия, например wxID_OK
или wxID_CANCEL
. Если он не закрывается для вас сам по себе, это может быть из-за того, что вы делаете что-то странное в вашем OnCloseWindow::OnOk()
(чего вы не показываете ни того, ни другого). Если вы хотите, чтобы он закрыл ваш диалог, позвоните EndModal()
, чтобы сделать это оттуда.