首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

wxwidgets的wxTextCtrl的有关问题

2012-03-01 
wxwidgets的wxTextCtrl的问题!代码如下,我想在文本框里输入一个数据,然后按下“保存”按钮,将文本框数据保存

wxwidgets的wxTextCtrl的问题!
代码如下,我想在文本框里输入一个数据,然后按下“保存”按钮,将文本框数据保存到文件。
但是我在输入数据后,按下“保存”按钮,程序直接退出了。
meg.AddLine(text->GetValue());改成meg.AddLine(wxT("hello"));是可以的!


#include "wx/wx.h"
#include "wx/textctrl.h"
#include "wx/textfile.h"

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

IMPLEMENT_APP(MyApp)

class MyFrame:public wxFrame
{
public:
  MyFrame(const wxString& title);
  void OnSave(wxCommandEvent& event);
  wxTextCtrl* text;
private:

  DECLARE_EVENT_TABLE()
};

BEGIN_EVENT_TABLE(MyFrame,wxFrame)
  EVT_BUTTON(wxID_OK,MyFrame::OnSave)
END_EVENT_TABLE()

void MyFrame::OnSave(wxCommandEvent& event)
{
  wxTextFile meg(wxT("meg"));
  meg.Open();
  meg.AddLine(text->GetValue());
  //meg.AddLine(wxT("hello"));是可以的!
  meg.Write();
  meg.Close();
  wxMessageBox(wxT("\n 保存成功 !"),wxT("Message"),wxOK);
}

MyFrame::MyFrame(const wxString& title):wxFrame(NULL,wxID_ANY,title)
{
  wxPanel* panel = new wxPanel(this,-1);
  wxTextCtrl* text = new wxTextCtrl(panel,1000,wxEmptyString);
  wxButton* button = new wxButton(panel,wxID_OK,wxT("保存(&S)"),wxPoint(150,0));
}

bool MyApp::OnInit()
{
  wxImage::AddHandler(new wxPNGHandler);
  MyFrame* frame = new MyFrame(wxT("test"));
  frame->Show(true);
  return true;
}


[解决办法]
wxTextCtrl* text = new wxTextCtrl(panel,1000,wxEmptyString);
//把wxTextCtrl* 去掉就可以了, meg.AddLine(text->GetValue())这里的text没有初始化

[解决办法]
楼上正解,你用了个野指针,程序异常退出

热点排行