1
與上次相似的問題。我運行代碼,退出它。圖形用戶界面消失,它似乎已經完全退出,但我檢查我的進程列表和代碼仍然存有內存。wxDialog工作正常,但wxFileDialog調用導致程序無法終止
我縮小了對wxFileDialog的調用範圍。我不明白我做錯了什麼,因爲我以類似的方式打電話給我打電話給wxDialog。 wxDialog調用不會導致此問題,但wxFileDialog確實會導致此問題。
正常工作:
// Help Dialog
void MyFrame::OnHelp(wxCommandEvent& WXUNUSED(event))
{
wxBoxSizer *topsizer;
wxHtmlWindow *html;
wxDialog dlg(this, wxID_ANY, wxString(_("Help")));
topsizer = new wxBoxSizer(wxVERTICAL);
html = new wxHtmlWindow(&dlg, wxID_ANY, wxDefaultPosition,
wxSize(380, 160), wxHW_SCROLLBAR_NEVER);
html->SetBorders(0);
html->LoadPage(wxT("data/help.html"));
// Fit the HTML window to the size of its contents
html->SetSize(html->GetInternalRepresentation()->GetWidth(),
html->GetInternalRepresentation()->GetHeight());
topsizer->Add(html, 1, wxALL, 10);
wxButton *but = new wxButton(&dlg, wxID_OK, _("OK"));
but->SetDefault();
topsizer->Add(but, 0, wxALL | wxALIGN_RIGHT, 15);
dlg.SetSizer(topsizer);
topsizer->Fit(&dlg);
dlg.CentreOnParent();
dlg.ShowModal();
}
原因問題:
void MyFrame::OnVidFile(wxCommandEvent& WXUNUSED(event))
{
wxString caption = wxT("Choose a file");
wxString wildcard = wxT("AVI files (*.avi)|*.avi");
wxString defaultDir = wxGetHomeDir();
wxString defaultFilename = wxEmptyString;
wxFileDialog dialog(this, caption, defaultDir, defaultFilename, wildcard, wxOPEN | wxFILE_MUST_EXIST);
dialog.CentreOnParent();
if(dialog.ShowModal() == wxID_OK) // problem
pathVid = dialog.GetPath().c_str();
}
這將導致程序無法正常終止,即使我扔在一個dialog.Destroy();或dialog.Close();最後。他們看起來像對我來說類似的對話類的調用?
我在這裏錯過了什麼嗎?