wxWidgets communicate

/*
*程序的版权和版本声明部分:
*Copyright(c)2014,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:田成琳
*完成日期:2014 年 5 月 30 日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述: -
*问题描述:初体验wxWidgets
*程序输出:一个简单的小窗口,含有两个按钮,能计数
*问题分析:
*算法设计:
*/
#include<wx/wx.h>
#include<wx/panel.h>
class LeftPanel : public wxPanel//左面板及设置按钮
{
public:
    LeftPanel(wxPanel *parent);//构造函数
    void OnPlus(wxCommandEvent &event);//加函数
    void OnMinus(wxCommandEvent &event);//减函数
    wxButton *m_plus;//+按钮
    wxButton *m_minus;//-按钮
    wxPanel *m_parent;//父面板
    int count;
};
void LeftPanel::Onplus(wxCommandEvent &WXUNUSED(event))
{
    count++;
    Communicate *com =(Communicate *)m_parent->GetParent();
    com->m_rp->m_text->SetLabel(wxString::Format(wxT("%d"),count));
}
void LeftPanel::OnMinus(wxCommandEvent &WXUNUSED(event))
{
    count--;
    Communicate *com = (Communicate *) m_parent->GetParent();
    com->m_rp->m_text->SetLabel(wxString::Format(wxT("%d"),count));
}
class RightPanel : public wxPanel
{
public:
    RightPanel(wxPanel *parent);//构造函数
    void OnSetText(wxCommandEvent &event);
    wxStaticText *m_text;//文本框
};
const int ID_PLUS = 101;
const int ID_MINUS = 102;
LeftPanel::LeftPanel(wxPanel *parent)
    :wxPanel(parent, -1, wxPoint(-1,-1), wxSize(-1,-1), wxBORDER_SUNKEN)
{
    count = 0;
    m_parent = parent;
    m_plus = new wxButton(this, ID_PLUS, wxT("+"),wxPoint(10,10));//新增+按钮
    m_minus = new wxButton(this, ID_MINUS, wxT("-"), wxPoint(10, 60));//新建-按钮
    connect(ID_PLUS,wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(LeftPanel::OnPlus));
    //将按钮与功能绑定
    connect(ID_MINUS, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(LeftPanel::OnMinus));
}
RightPanel::RightPanel(wxPanel *parent)
    :wxPanel(parent,wxID_ANY, wxDefaultPosition,wxSize(270,150), wxBORDER_SUNKEN)
{
    m_text=new wxStaticText(this, -1, wxT("0"), wxPoint(40,60));
}
class Communicate : public wxFrame//界面函数
{
public:
    Communicate(const wxString &title);
    LeftPanel *m_lp;
    RightPanel *m_rp;
    wxPanel *m_parent;
};
Communicate::Communicate(const wxString &title)
    :wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(290,150))
{
    m_parent = new wxPanel(this,wxID_ANY);
    wxBoxSizer *box = new wxBoxSizer(wxHORIZONTAL);
    m_lp = new LeftPanel(m_parent);
    m_rp = new RightPanel(m_parent);
    box->Add(m_lp, 1, wxEXPAND | wxALL, 5);
    box->Add(m_rp, 1, wxEXPAND | wxALL, 5);
    m_parent->SetSizer(box);
    this->Centre();
};
class MyApp:public wxApp
{
public:
    virtual bool OnInit();
};
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
    Communicate *communicate = new Communicate(wxT("Widgets communicate"));
    communicate->Show(true);
    return true;
}


 

运行结果:

心得体会:很多不懂的地方,低级的模仿,还有一个问题,为啥多个文件编译成功,一个文件就是编译不通过呢。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值