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

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
分享到:
评论

相关推荐

    eMule 学习心得 开发

    ### eMule 学习心得与开发要点解析 #### 一、eMule 的起源与发展历程 eMule,作为一款流行的P2P文件共享工具,其发展历程充满传奇色彩。根据资料记载,eMule 项目的起始可以追溯到2002年5月13日,由一位名叫 ...

    wxwidget教程

    ### wxwidget教程知识点详解 #### 一、wxWidgets简介与...通过本教程的学习,开发者不仅能够掌握如何使用wxWidgets构建基础的GUI应用程序,还能深入了解其高级特性和设计理念,从而更加高效地开发出高质量的应用程序。

    模仿速达界面

    2. 代码中国.txt:可能包含了与项目相关的一些代码片段或编程心得,或许是从代码中国网站上摘录的,用于辅助学习和理解。 3. 代码中国.url:这是一个指向代码中国网站的快捷方式,可能提供更多的编程资源和社区支持...

    小小记事本

    同时,它也适合作为笔记工具,记录课堂讲义、读书心得或是项目想法。用户可以利用其快速打开和保存文件的功能,方便地管理学习资料。 从技术角度来看,记事本软件通常采用文本编辑器的核心技术,如处理ASCII或...

    demo(多文档浏览器).rar_DEMO_多文档

    2. **框架和库**:例如,使用Microsoft的Windows API、Qt、wxWidgets或.NET Framework等,它们提供了构建MDI应用的支持。 3. **事件处理**:处理用户与界面的交互,如打开、关闭、最大化、最小化子窗口,以及在各...

    pdf阅读器

    工具性质的PDF阅读器往往具有用户友好的界面,这需要熟练掌握GUI设计原则和相应框架,例如Qt、JavaFX或wxWidgets。开发者需要创建布局管理器,确保在不同分辨率和屏幕尺寸下都能正常显示。同时,为了提供流畅的用户...

    文件16进制位察看程序源代码

    6. 跨平台开发:如果程序是“综合系统类”,那么可能涉及到跨平台编程技术,如使用Qt、wxWidgets或跨平台的编程语言(如Python、Java)来实现。 通过深入学习这个程序的源代码,开发者可以提升自己的编程技能,了解...

    播放器

    在IT领域,播放器是一种非常常见的软件应用,用于播放各种多媒体文件,如音频、视频等。本主题将深入探讨播放器的...对于想要深入学习这一领域的IT从业者来说,探究播放器的内部机制和开发流程是一项有价值的学习任务。

    KSirtet-开源

    在技术实现上,KSirtet可能采用了诸如C++或Python等编程语言,利用网络编程库实现多人联机功能,使用图形用户界面库(如Qt或wxWidgets)构建游戏界面,以及可能运用机器学习算法来训练AI玩家。对于开发者来说,研究...

    prsi-开源

    在技术层面,Prsi可能采用了诸如C++或Python等编程语言编写,结合了图形用户界面(GUI)库,如Qt或wxWidgets,以提供友好的用户界面。同时,为了实现网络对战功能,可能运用了网络编程技术,如TCP/IP协议栈和多线程...

    Shutdown_Manager-开源

    "Shutdown Manager"作为一个开源项目,其源代码对所有人开放,这意味着任何人都可以查看、学习甚至修改它的代码,以满足自己特定的需求。这种开放性鼓励了开发者之间的交流和合作,推动了软件的不断优化和完善。同时...

    xescoba-开源

    1. **Escoba游戏规则**:Escoba是一种在西班牙流行的传统纸牌游戏,通常由三位玩家进行,使用48张牌(去掉大王和小王的普通扑克牌)。游戏的目标是通过收集特定的组合(如三连张、对子等)来获得分数。Escoba游戏...

Global site tag (gtag.js) - Google Analytics