`
deepfuture
  • 浏览: 4332692 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79404
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68361
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101484
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:281140
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14597
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65552
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31311
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45199
社区版块
存档分类
最新评论

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 ( wxWindow window )
  • 大小: 72.8 KB
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics