wxApp застревает при закрытии - PullRequest
0 голосов
/ 25 ноября 2011

Я добавил новые диалоги и фрагменты в мое wxApp, но теперь, когда я закрываю основной фрейм, основной фрейм удаляется, но он никогда не попадает в функцию OnExit и застревает.

Когда я пытаюсь «сломать все», он получает в этом вызове функции:

wxIdleWakeUpModule::MsgHookProc

in:

return CallNextHookEx(ms_hMsgHookProc, nCode, wParam, lParam);

У вас есть какой-нибудь совет, как это исправить?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2011

Итак, после того как я протестировал один за другим все фрагменты кода, которые я добавил в свою ранее работающую программу, я понял, что у одного из создаваемых мной wxDialog не было родителя, но это не было предназначено ,

Так что из-за этого оно не закрылось, потому что одно из главных окон было еще живо (хотя оно не отображалось)

Спасибо всем за помощь

0 голосов
/ 25 ноября 2011

Используйте Destroy, когда диалог закрыт.На этой странице показано, как это сделать при создании объекта в куче:

void AskUser()
{
    MyAskDialog *dlg = new MyAskDialog(...);
    if ( dlg->ShowModal() == wxID_OK )
        ...
    //else: dialog was cancelled or some another button pressed

    dlg->Destroy();
}

Когда диалоговое окно создается в стеке, ничего особенного делать не следует.

...