WxWidgets文件对话框问题

WxWidgets File Dialog problems

本文关键字:问题 对话框 文件 WxWidgets      更新时间:2023-10-16

我在尝试学习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"参数,它运行得很好。我使用wxWidgets的2.8.12版本。

感谢阅读。我真的很感激任何人能给我的帮助和指导。很抱歉,我遗漏了一些很明显的东西。

在非常老的wxWidgets版本(2.6)中,这种风格被称为wxMULTIPLE,但wxFD_MULTIPLE在任何2.8中都肯定可用。x版本。你应该给出你得到的错误的(开头),让我们理解到底发生了什么。

完全独立地,你的代码是错误的,因为它包含内存泄漏:对话框必须销毁,因为模态对话框是通常规则的例外,所有窗口都应该在堆上分配,可以在堆栈上分配,即用作简单的局部变量,参见文档中的示例。我们还强烈建议您查看"对话框"示例代码。