C++ wxButtonClick don';I don’我看不出有资格

C++ wxButtonClick don';I don’我看不出有资格,c++,wxwidgets,C++,Wxwidgets,昨天,在编译程序并尝试使用它之后,我发布了一个关于在函数中创建指向小部件的指针的问题,但是当我点击按钮时,什么也没有发生 也许,某个地方知道我的失败在哪里,或者知道我的代码的一些改进,这会有所帮助。我的代码: gui.h #include <wx/wx.h> #include <string> class wxWCK : public wxFrame { public: wxWCK(const wxString& title); void On

昨天,在编译程序并尝试使用它之后,我发布了一个关于在函数中创建指向小部件的指针的问题,但是当我点击按钮时,什么也没有发生

也许,某个地方知道我的失败在哪里,或者知道我的代码的一些改进,这会有所帮助。我的代码:

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();
#包括
#包括
wxWCK类:公共wxFrame
{
公众:
wxWCK(常量WX字符串和标题);
在Clickcon(wxCommandEvent&event)上无效;
无效(wxCommandEvent&event);
私人:
wxButton*连接;
wxButton*启动;
WXTEXTCRL*文本;
};
const int ID_CON=wxID_HIGHEST+1;
const int ID_STA=wxID_HIGHEST+2;
常数int ID_MF0=102;
常数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;
}
#包括“gui.h”
wxWCK::wxWCK(常量wxString和title)
:wxFrame(NULL,ID_MF0,title,wxDefaultPosition,wxSize(400300))
{
wxPanel*面板=新的wxPanel(此为-1);
wxBoxSizer*vbox=新的wxBoxSizer(wxVERTICAL);
wxBoxSizer*hbox1=新的wxBoxSizer(wx水平);
wxBoxSizer*hbox2=新的wxBoxSizer(wx水平);
//Outputwidget
text=new wxTextCtrl(面板,ID_TEX,_T(“”),
wxPoint(-1,-1),wxSize(10001000),wxTE_多行);
//将流重定向到outputwidget
std::ostream流(文本);
流添加(连接);
hbox2->添加(开始);
vbox->Add(hbox1,1,wxEXPAND);
vbox->Add(hbox2,0,wxALIGN_LEFT | wxRIGHT | wxBOTTOM,10);
面板->设置器(vbox);
连接(ID图标、wxEVT图标、命令按钮、,
wxCommandEventHandler(wxWCK::OnClickCon));
//连接(ID、wxEVT、命令、按钮),
//wxCommandEventHandler(wxWCK::OnClickSta));
}
void wxWCK::OnClickCon(wxCommandEvent和WXUNUSED(事件))
{void Connect();}
void wxWCK::OnClickSta(wxCommandEvent和WXUNUSED(事件))
{void Start();}
void Connect()
{
//尝试获取指向“文本”的指针
std::ostream流((wxTextCtrl*)wxWindow::FindWindowById(ID_TEX));
std::string con=“已连接”;
流动
替换为:

void wxWCK::OnClickCon(wxCommandEvent& WXUNUSED(event))
{   Connect(); }

如有必要,在
OnClickCon
之前向前声明
Connect
函数。用同样的方法修复
OnClickSta
函数。

请看Thx,您太棒了!我必须在Ctor中创建函数原型,以便Onclick Fct知道调用函数的方法。
void wxWCK::OnClickCon(wxCommandEvent& WXUNUSED(event))
{   Connect(); }