wxwidgets学习心得(1)

#include <wx/wx.h>

// application class
class wxMyApp : public wxApp
{
public:
    // 虚函数
    virtual bool OnInit();

    // 处理按钮事件
    void OnClick(wxCommandEvent& event) {
        wxString msg;
        msg.Printf(wxT("wxwidgets欢迎您,版本号:%s"),wxVERSION_STRING);
        wxMessageBox(msg,wxT("BYE,不要想我噢~"),wxOK,GetTopWindow());
        GetTopWindow()->Close();
    }
};

IMPLEMENT_APP(wxMyApp);

bool wxMyApp::OnInit()
{
    // 创建主窗口
    SetTopWindow( new wxFrame( NULL, -1, wxT("你好,我的第一个wxwidgets程序"), wxDefaultPosition, wxSize( 100, 50) ) );

    // 创建一个按钮
    new wxButton( GetTopWindow(), wxID_EXIT, wxT("请按我退出!") );

    // 将按钮的事情与事件处理器连接connect button click event with event handler
    Connect(wxID_EXIT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(wxMyApp::OnClick) );

    // 显示主frame
    GetTopWindow()->Show();

    // enter the application's main loop
    return true;
}

 这是一个简单的仅有一个按钮的程序,为了方便调试和编译,我们可以直接下载codelite的工具进行编辑和调试,该工具已经预置了wxwidgets包和WIN下的G++包

 



 首先要定义一个类继承自wxApp类:

class wxMyApp : public wxApp

每个应用程序需要定义一个wxApp类的子类,并需要创建且只能创建一个这个类的实例,这个实例控制着整个程序的运行

 该类需要一个初始化方法

    // 虚函数
    virtual bool OnInit();

该方法完成下面的操作

// 创建主窗口
    SetTopWindow( new wxFrame( NULL, -1, wxT("你好,我的第一个wxwidgets程序"), wxDefaultPosition, wxSize( 100, 50) ) );

    // 创建一个按钮
    new wxButton( GetTopWindow(), wxID_EXIT, wxT("请按我退出!") );

    // 将按钮的事情与事件处理器连接connect button click event with event handler
    Connect(wxID_EXIT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(wxMyApp::OnClick) );

    // 显示主frame
    GetTopWindow()->Show();

    // enter the application's main loop
    return true;
返回true表示下面可以开始事件循环来接收用户输入,否则返回false,将结束整个程序的运行。

 

另外,按钮是退出按钮,事件完成显示对话框,提取版本号后关闭frame,GetTopWindow()返回frame

frame是一个窗口类

        wxString msg;
        msg.Printf(wxT("wxwidgets欢迎您,版本号:%s"),wxVERSION_STRING);
        wxMessageBox(msg,wxT("BYE,不要想我噢~"),wxOK,GetTopWindow());
        GetTopWindow()->Close();

 

IMPLEMENT_APP(wxMyApp)是一个宏,其作用是创建一个新的应用程序对象,如果今后你需要使用

wxGetApp()函数一个到这个MyApp实例的引用,则需要使用DECLARE_APP(MyApp)宏

 

我们在OnInit中调用SetTopWindow,通过指定windows参数,SetTopWindow就知道哪个是主窗口

 
void wxApp::SetTopWindow( wxWindowwindow)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值