this을 읽었지 만, 코드에 대해 잘못된 점을 이해하지 못했습니다.wxWidgets : 사용자 정의 모달 대화 상자를 닫을 때 메모리 오류가 발생했습니다.
wxDialog
을 확장하는 클래스 인 bmNewFromImageDialog.h
은 다음과 같습니다.
#ifndef BMNEWFROMIMAGEDIALOG_H
#define BMNEWFROMIMAGEDIALOG_H
#include "./../utils/includer.h" // includes a bunch of wx-related files
class bmNewFromImageDialog : public wxDialog {
public:
wxBoxSizer *mainVBox, *flagHBox, *OKCancelHBox;
wxStaticBox *flagsSBox;
wxButton *OKButton, *cancelButton;
wxRadioButton *GT0RadioButton;
bmNewFromImageDialog() {}
bmNewFromImageDialog(wxWindow *parent);
void init();
};
#endif
여기는 bmNewFromImageDialog.cpp
입니다.
#include "./bmNewFromImageDialog.h"
#include "./../utils/includer.h"
bmNewFromImageDialog::bmNewFromImageDialog(wxWindow *parent) : wxDialog(parent, -1, wxT("new image..."), wxDefaultPosition, wxDefaultSize) {
init();
}
void bmNewFromImageDialog::init() {
mainVBox = new wxBoxSizer(wxVERTICAL);
flagHBox = new wxBoxSizer(wxHORIZONTAL);
OKCancelHBox = new wxBoxSizer(wxHORIZONTAL);
flagsSBox = new wxStaticBox(this, -1, wxT("Color flags"), wxPoint(0, 0), wxDefaultSize);
GT0RadioButton = new wxRadioButton(this, -1, wxT(">0: 3 channels"), wxPoint(0, 0));
flagsSBox->AddChild(GT0RadioButton);
flagHBox->Add(flagsSBox, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, 10);
OKButton = new wxButton(this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize(100, 40));
cancelButton = new wxButton(this, wxID_CANCEL, wxT("cancel"), wxDefaultPosition, wxSize(100, 40));
OKCancelHBox->Add(OKButton, 1);
OKCancelHBox->Add(cancelButton, 1, wxLEFT, 5);
mainVBox->Add(flagHBox, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, 10);
mainVBox->Add(OKCancelHBox, 0, wxALIGN_CENTER | wxBOTTOM, 10);
SetSizer(mainVBox);
Center();
}
내가 코드에서 대화 상자를 사용하는 방법이있다 : 나는 확인을 클릭합니다/닫을 때
bmNewFromImageDialog *newDialog = new bmNewFromImageDialog(this);
newDialog->ShowModal();
delete newDialog;
나는 끊임없이 런타임에 처리되지 않은 메모리 예외 오류가/그 bmNewFromImageDialog
에 취소를 클릭합니다. 이 문제를 어떻게 해결해야합니까?
편집
@ 선생님-딕비 - 치킨 시저가 나는 .Destroy()
스택 솔루션을 시도했지만 같은 오류가 여전히있다 :
감사! 이것은 그 라인을 주석으로 처리했습니다. –