0

我在尝试学习 WXWidgets 时遇到了一些麻烦。我目前正在尝试使用文件对话框,并且我有一个打开就好了。但是每当我尝试将样式应用于窗口时,我都会遇到麻烦。对于我使用的任何样式,我都会得到一个未声明的标识符。

我的代码如下(是的,我知道,hello world 应用程序。在真正制作一个成熟的应用程序之前,我正在尝试所有我需要学习的东西)

    #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。

谢谢阅读。我非常感谢任何人可以提供的任何帮助或指导。对不起,如果我错过了一些非常明显的东西。

4

1 回答 1

0

在非常旧的 wxWidgets 版本(2.6)中,这种风格被称为wxMULTIPLEwxFD_MULTIPLE绝对可以在任何 2.8.x 版本中使用。你应该给出你得到的错误(开始),让我们了解真正发生的事情。

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

于 2012-12-26T20:20:51.967 回答