【发布时间】:2014-07-17 05:17:37
【问题描述】:
昨天我在Creating a pointer to a widget in a function发了一个问题,我编译了程序并尝试使用它,但是当我点击按钮时,没有任何反应。
也许,在某个地方知道我的失败在哪里,或者知道我的代码的一些改进,这会有所帮助。我的代码:
gui.h
#include <wx/wx.h>
#include <string>
class wxWCK : public wxFrame
{
public:
wxWCK(const wxString& title);
void OnClickCon(wxCommandEvent& event);
void OnClickSta(wxCommandEvent& event);
private:
wxButton *connect;
wxButton *start;
wxTextCtrl *text;
};
const int ID_CON = wxID_HIGHEST + 1;
const int ID_STA = wxID_HIGHEST + 2;
const int ID_MF0 = 102;
const int ID_TEX = 103;
void Connect();
void Start();
gui.cpp
#include "gui.h"
wxWCK::wxWCK(const wxString& title)
: wxFrame(NULL, ID_MF0, title, wxDefaultPosition, wxSize(400,300))
{
wxPanel *panel = new wxPanel(this, -1);
wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *hbox1 = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *hbox2 = new wxBoxSizer(wxHORIZONTAL);
//Outputwidget
text = new wxTextCtrl(panel, ID_TEX, _T(""),
wxPoint(-1, -1), wxSize(1000, 1000), wxTE_MULTILINE);
//redirecting stream to the outputwidget
std::ostream stream(text);
stream << "Hello" << std::endl;
connect = new wxButton(panel, ID_CON, _T("Connect"));
start = new wxButton(panel, ID_STA, _T("Start"));
hbox1->Add(text);
hbox2->Add(connect);
hbox2->Add(start);
vbox->Add(hbox1, 1, wxEXPAND);
vbox->Add(hbox2, 0, wxALIGN_LEFT | wxRIGHT | wxBOTTOM, 10);
panel->SetSizer(vbox);
Connect(ID_CON, wxEVT_COMMAND_BUTTON_CLICKED,
wxCommandEventHandler(wxWCK::OnClickCon));
//Connect(ID_STA, wxEVT_COMMAND_BUTTON_CLICKED,
// wxCommandEventHandler(wxWCK::OnClickSta));
}
void wxWCK::OnClickCon(wxCommandEvent& WXUNUSED(event))
{ void Connect(); }
void wxWCK::OnClickSta(wxCommandEvent& WXUNUSED(event))
{ void Start(); }
void Connect()
{
//Try to get a pointer to 'text'
std::ostream stream((wxTextCtrl*) wxWindow::FindWindowById(ID_TEX));
std::string con = "Connected";
stream << con << std::endl;
}
void Start()
{
//Try to get a pointer to 'text'
std::ostream stream((wxTextCtrl*) wxWindow::FindWindowById(ID_TEX));
std::string sta = "Started";
stream << sta << std::endl;
}
我正在使用 wxWidgets 2.9.4、g++-Compiler 和 CodeLite 5.1
【问题讨论】: