#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 | ) |
相关推荐
### eMule 学习心得与开发要点解析 #### 一、eMule 的起源与发展历程 eMule,作为一款流行的P2P文件共享工具,其发展历程充满传奇色彩。根据资料记载,eMule 项目的起始可以追溯到2002年5月13日,由一位名叫 ...
### wxwidget教程知识点详解 #### 一、wxWidgets简介与...通过本教程的学习,开发者不仅能够掌握如何使用wxWidgets构建基础的GUI应用程序,还能深入了解其高级特性和设计理念,从而更加高效地开发出高质量的应用程序。
2. 代码中国.txt:可能包含了与项目相关的一些代码片段或编程心得,或许是从代码中国网站上摘录的,用于辅助学习和理解。 3. 代码中国.url:这是一个指向代码中国网站的快捷方式,可能提供更多的编程资源和社区支持...
同时,它也适合作为笔记工具,记录课堂讲义、读书心得或是项目想法。用户可以利用其快速打开和保存文件的功能,方便地管理学习资料。 从技术角度来看,记事本软件通常采用文本编辑器的核心技术,如处理ASCII或...
2. **框架和库**:例如,使用Microsoft的Windows API、Qt、wxWidgets或.NET Framework等,它们提供了构建MDI应用的支持。 3. **事件处理**:处理用户与界面的交互,如打开、关闭、最大化、最小化子窗口,以及在各...
工具性质的PDF阅读器往往具有用户友好的界面,这需要熟练掌握GUI设计原则和相应框架,例如Qt、JavaFX或wxWidgets。开发者需要创建布局管理器,确保在不同分辨率和屏幕尺寸下都能正常显示。同时,为了提供流畅的用户...
6. 跨平台开发:如果程序是“综合系统类”,那么可能涉及到跨平台编程技术,如使用Qt、wxWidgets或跨平台的编程语言(如Python、Java)来实现。 通过深入学习这个程序的源代码,开发者可以提升自己的编程技能,了解...
在IT领域,播放器是一种非常常见的软件应用,用于播放各种多媒体文件,如音频、视频等。本主题将深入探讨播放器的...对于想要深入学习这一领域的IT从业者来说,探究播放器的内部机制和开发流程是一项有价值的学习任务。
在技术实现上,KSirtet可能采用了诸如C++或Python等编程语言,利用网络编程库实现多人联机功能,使用图形用户界面库(如Qt或wxWidgets)构建游戏界面,以及可能运用机器学习算法来训练AI玩家。对于开发者来说,研究...
在技术层面,Prsi可能采用了诸如C++或Python等编程语言编写,结合了图形用户界面(GUI)库,如Qt或wxWidgets,以提供友好的用户界面。同时,为了实现网络对战功能,可能运用了网络编程技术,如TCP/IP协议栈和多线程...
"Shutdown Manager"作为一个开源项目,其源代码对所有人开放,这意味着任何人都可以查看、学习甚至修改它的代码,以满足自己特定的需求。这种开放性鼓励了开发者之间的交流和合作,推动了软件的不断优化和完善。同时...
1. **Escoba游戏规则**:Escoba是一种在西班牙流行的传统纸牌游戏,通常由三位玩家进行,使用48张牌(去掉大王和小王的普通扑克牌)。游戏的目标是通过收集特定的组合(如三连张、对子等)来获得分数。Escoba游戏...