WxWidgets文件对话框问题

时间:2012-12-26 19:11:46

标签: c++ wxwidgets

我在尝试学习WXWidgets方面遇到了一些麻烦。我目前正在尝试使用文件Dialogs,我有一个开放就好了。但每当我尝试将样式应用到窗口时,我都会遇到麻烦。无论我使用什么样的风格,我都会得到一个未声明的标识符。

我的代码如下(是的,我知道,你好世界的应用程序。我正在尝试在实际制作完全成熟的应用程序之前需要学习的所有东西)

    #include "wx/wx.h"
    #include "wx/filedlg.h"

    #include "HelloWorldApp.h"

    IMPLEMENT_APP(HelloWorldApp)

    bool HelloWorldApp::OnInit()
    {
        wxFrame *frame = new wxFrame((wxFrame*) NULL, -1, _T("Hello wxWidgets World"));


        wxFileDialog* OpenDialog = new wxFileDialog(frame, _("Choose a file to open"), wxEmptyString, wxEmptyString, 
            _("Image Files (*.jpg, *.png, *.gif, *.bmp)|*.jpg;*.png;*.gif;*.bmp|Sound Files (*.wav, *.mp3)|*.wav;*.mp3"),
wxFD_MULTIPLE);

        frame->CenterOnScreen();
        frame->Show(true);

        OpenDialog->ShowModal();

        SetTopWindow(frame);
        return true;
    }

没有“wxFD_MULTIPLE”参数,它运行得很好。我正在使用版本2.8.12的wxWidgets。

感谢阅读。我非常感谢任何人都可以给予的任何帮助或指导。对不起,如果它真的很明显我就错过了。

1 个答案:

答案 0 :(得分:0)

在非常古老的wxWidgets版本(2.6)中,此样式称为wxMULTIPLE,但wxFD_MULTIPLE绝对可用于任何2.8.x版本。你应该给出(开始)你得到的错误,以便我们理解真正发生的事情。

完全独立地,您的代码是错误的,因为它包含内存泄漏:必须销毁对话框,因为模态对话框是通常规则的例外,即所有窗口都应该在堆上分配并且可以在堆栈上分配,即使用作为简单的局部变量,请参阅the example in the documentation。强烈建议您查看“对话框”示例代码。