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++包

 


wxwidgets学习心得(1)
 首先要定义一个类继承自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 ( wxWindow window )

你可能感兴趣的:(wxwidgets)