【问题标题】:GetValue method of wxTextCtrl class is crashing my appwxTextCtrl 类的 GetValue 方法使我的应用程序崩溃
【发布时间】:2014-05-13 13:38:43
【问题描述】:

我正在尝试使用 wxTextCtrl 为我的 GUI 应用程序创建一个输入框。 我已经制作了这个盒子,但是当我试图从中获取输入文本时,它崩溃了,我不知道为什么。

代码如下:

ma​​in.cpp:

int main(int argc, char** argv)
{   
   wxApp::SetInstance( new App() );
   wxEntryStart(argc, argv);
   wxTheApp->OnInit();

   wxTheApp->OnRun();

   wxTheApp->OnExit();
   wxEntryCleanup();

   return 0;
}

app.cpp:

bool App::OnInit()
{
   wxString title = "Version: ";
   title += APP_VERSION;

   /* Create the frame for my app */
   Frame *simple = new Frame(0, wxID_ANY, title, wxDefaultPosition, wxSize(287, 700)/*wxSize(287, 450)*/, (wxDEFAULT_FRAME_STYLE & ~(wxRESIZE_BORDER | wxMAXIMIZE_BOX)));
   simple->Show(true);

   return true;
}

frame.cpp:

Frame::Frame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) 
              : wxFrame( parent, id, title, pos, size, style )
{
   wxPanel  *panel  = new wxPanel(this, wxID_ANY);
   input_text  = new wxTextCtrl(this, wxID_ANY, "initial", wxPoint(10, 400), wxSize(250, 100));

   wxString str = input_text->GetValue();
   wxMessageBox(str);
}

它在 frame.cpp 上崩溃了:wxString str = input_text->GetValue();

我正在使用 wxWidgets-3.0.0 和 Visual Studio 2012 在 Windows 上进行编译。

这可能是一件非常简单的事情,但我刚开始使用 wxWidgets 并没有太多经验。

谢谢。

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    如果你刚开始使用 wxWidgets,为什么不使用标准的初始化方式,即wxIMPLEMENT_APP 宏?我不确定这是否能解释您的问题(如果您在调试器下运行程序并确定它为什么会崩溃,即向我们展示完整的堆栈跟踪,这将非常有用),但您肯定不知道'没有正确初始化库。

    FWIW,当您可能打算将文本控件创建为面板的子项时,您也将其创建为框架的子项,但这绝对与崩溃无关。

    【讨论】:

    • 感谢您的指示,确实我错误地初始化了库。我链接了错误的库并定义了我自己的 main 函数,而不是使用 wxWidgets 内部的那个。
    【解决方案2】:

    在窗口完全显示之前,您正在 Frames 构造函数中调用 GetValue()。我认为目前不可能。

    【讨论】:

    • 您好,感谢您的回答。一旦构造了 wxTextCtrl 对象,即使没有显示窗口,也可以调用 GetValue 方法。
    【解决方案3】:

    对于其他到达这里的人:

    我认为这可能是由于 wxWidgets 库(dll/共享对象)编译时使用的字符串设置与应用程序不同(宽/UTF-16/16 位与窄/UTF-8/char)。

    很抱歉,我没有时间对我的案例进行进一步调查,只是最终在同一棵树中编译了库和应用程序但我相信这是要寻找的方向,因为它解释了否则不可能解释与 wxString 相关的崩溃。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多