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没有初始化
[解决办法]
楼上正解,你用了个野指针,程序异常退出