wxFileDialog ShowModal问题

时间:2014-03-07 08:01:05

标签: c++ user-interface wxwidgets

我是wxWidgets的新手,我正在尝试使用wxFileDialog,但在使用它一段时间之后我发现使用它有问题。

致电:

  

ShowModal()// For:wxFileDialog

我的程序增长~8000K,每次下一次调用后它都会增长~1000K。

下面是我用来测试这个问题的代码,我假设我做了一些非常错误的事情,并且不知道我到处找了什么修复并且似乎找不到任何东西。

我假设在某处分配了内存,但从未取消分配...

任何可以帮助解决这个问题的人都会非常感激!

#include <wx\wxprec.h>

class MyApp : public wxApp {
public:
    virtual bool OnInit();
};

class My_Frame : public wxFrame {
public:
    My_Frame() : wxFrame(NULL, wxID_ANY, _T("Test"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE & ~wxRESIZE_BORDER & ~wxMAXIMIZE_BOX) {
        wxButton* newButton = new wxButton(this, LOAD_FILE_BROWSER_ID, "PRESS ME");
    }

    void on_button_press(wxCommandEvent& event);

    enum ButtonID {
        LOAD_FILE_BROWSER_ID = wxID_HIGHEST + 1
    };

    DECLARE_EVENT_TABLE()
};

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit() {
    My_Frame* newFrame = new My_Frame;
    newFrame->Show(true);
    return true;
}

BEGIN_EVENT_TABLE(My_Frame, wxFrame)

EVT_BUTTON(My_Frame::ButtonID::LOAD_FILE_BROWSER_ID, My_Frame::on_button_press)

END_EVENT_TABLE()

void My_Frame::on_button_press(wxCommandEvent& WXUNUSED(event)){
    wxFileDialog FileLoad(this, "Load", "", "", "", wxFD_OPEN | wxFD_FILE_MUST_EXIST);
    FileLoad.ShowModal();
}

int main(int argc, char* argv[]){
    wxEntryStart(argc, argv);
    wxTheApp->CallOnInit();
    wxTheApp->OnRun();
}

1 个答案:

答案 0 :(得分:0)

打开一个文件对话框会在Windows下加载一些DLL(你必须在那里测试它),其中许多是第三方(shell扩展等)并且可能有内存泄漏。不幸的是,如果确实如此,除了找到DLL泄漏内存并停止使用它之外,你无能为力。要确定这不是一个wxWidgets问题,你可以直接使用打开文件对话框编写或在线查找一个简单的Win32应用程序,并检查它是否表现出相同的症状 - 它确实应该。