《使用wxWidgets进行跨平台程序开发》chap02——一个简单的应用程序
- // Name: minimal.cpp
- // Purpose: Minimal wxWidgets sample
- // Author: Julian Smart
- #include "wx/wx.h"
- // Declare the application class
- //定义应用程序类
- class MyApp : public wxApp
- {
- public:
- // Called on application startup
- //这个函数将会在程序启动的时候被调用
- virtual bool OnInit();
- };
- // Declare our main frame class
- //定义主窗口类
- class MyFrame : public wxFrame
- {
- public:
- // Constructor
- //主窗口类的构造函数
- MyFrame(const wxString& title);
- // Event handlers
- //事件处理函数
- void OnQuit(wxCommandEvent& event);
- void OnAbout(wxCommandEvent& event);
- private:
- // This class handles events
- //声明事件表
- DECLARE_EVENT_TABLE()
- };
- // Implements MyApp& GetApp()
- //有了这一行就可以使用MyApp & wxGetApp()了
- DECLARE_APP(MyApp)
- // Give wxWidgets the means to create a MyApp object
- //告诉主应用程序是哪个类的wxWidgets
- IMPLEMENT_APP(MyApp)
- // Initialize the application
- //初始化程序
- bool MyApp::OnInit()
- {
- // Create the main application window
- //创建主窗口
- MyFrame *frame = new MyFrame(wxT("Minimal wxWidgets App"));
- // Show it
- // 显示主窗口
- frame->Show(true);
- // Start the event loop
- //开始事件处理循环
- return true;
- }
- // Event table for MyFrame
- //类的事件表MyFrame
- BEGIN_EVENT_TABLE(MyFrame, wxFrame)
- EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
- EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
- END_EVENT_TABLE()
- void MyFrame::OnAbout(wxCommandEvent& event)
- {
- wxString msg;
- msg.Printf(wxT("Hello and welcome to %s"), wxVERSION_STRING);
- wxMessageBox(msg, wxT("About Minimal"), wxOK | wxICON_INFORMATION, this);
- }
- void MyFrame::OnQuit(wxCommandEvent& event)
- {
- // Destroy the frame
- //释放主窗口
- Close();
- }
- #include "mondrian.xpm"
- MyFrame::MyFrame(const wxString& title)
- : wxFrame(NULL, wxID_ANY, title)
- {
- // Set the frame icon
- //设置窗口图标
- SetIcon(wxIcon(mondrian_xpm));
- // Create a menu bar
- //创建菜单条
- wxMenu *fileMenu = new wxMenu;
- wxMenu *helpMenu = new wxMenu;
- // The "About" item should be in the help menu
- //添加“关于菜单项”
- helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog"));
- fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"), wxT("Quit this program"));
- // Now append the freshly created menu to the menu bar...
- //将菜单项添加到菜单条中
- wxMenuBar *menuBar = new wxMenuBar();
- menuBar->Append(fileMenu, wxT("&File"));
- menuBar->Append(helpMenu, wxT("&Help"));
- // ... and attach this menu bar to the frame
- //然后将菜单条放置在主窗口上
- SetMenuBar(menuBar);
- // Create a status bar just for fun
- //创建一个状态条让一切更有趣些
- CreateStatusBar();
- SetStatusText(wxT("Welcome to wxWidgets!"));
- }
《使用wxWidgets进行跨平台程序开发》chap02——一个简单的应用程序的更多相关文章
- 编写Java程序,实现一个简单的echo程序(网络编程TCP实践练习)
首先启动服务端,客户端通过TCP的三次握手与服务端建立连接: 然后,客户端发送一段字符串,服务端收到字符串后,原封不动的发回给客户端. ECHO 程序是网络编程通信交互的一个经典案例,称为回应程序,即 ...
- 使用Go开发一个简单的服务器程序
最近有个小项目,需要一个简单的后台程序来支撑,本来想用Nodejs来做,但是由于本人js一直很菜,并且很讨厌callback,虽然我也很喜欢异步模型,但我一直都觉得JS是反人类的.后台就用了go处理, ...
- 编写一个简单的C++程序
编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...
- 开发部署一个简单的Servlet
Servlet是一个执行在服务器端的Java Class文件,载入前必须先将Servlet程序代码编译成.class文件,然后将此class文件放在servlet Engline路径下.Servlet ...
- 一个简单的flask程序
初始化 所有Flask程序都必须创建一个程序实例. 程序实例是Flask类的对象,经常使用下述代码创建: from flask import Flask app = Flask(__name__) F ...
- Java入门篇(一)——如何编写一个简单的Java程序
最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...
- (原创)如何使用boost.asio写一个简单的通信程序(一)
boost.asio相信很多人听说过,作为一个跨平台的通信库,它的性能是很出色的,然而它却谈不上好用,里面有很多地方稍不注意就会出错,要正确的用好asio还是需要花一番精力去学习和实践的,本文将通过介 ...
- 什么是消息循环,一个简单的win32程序如何运行?
预备知识 1.什么是句柄? (HANDLE) 在win32编程中有各种句柄,那么什么是句柄呢? #define DECLARE_HANDLE(name) struct name##_ { int un ...
- 微信小程序开发系列五:微信小程序中如何响应用户输入事件
微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...
随机推荐
- Plugin 'FEDERATED' is disabled 或 1067错误 启动错误与“服务 mysql 意外停止”解决方法
MYSQL启动报1067错误,系统日志中是“服务 mysql 意外停止” Mysql日志中则是:“Plugin 'FEDERATED' is disabled” 网我在网上找到解决方案:1.在MY.I ...
- linux扩展lvm磁盘
env: centos 6.5 x64 hyper-v虚拟机 这个方法可以在当前运行的系统中扩展root磁盘 详细步骤 之前想创建的一个虚拟机的磁盘空间不够用了,所以想扩容一下磁盘. 正好使用的时候是 ...
- Sumbline编译Less
Less教程 Sublime Text 2的Less2Css插件介绍与安装 网址 http://fdream.net/blog/article/783.aspx 如果出现node.exe不是内部命令的 ...
- android中listview的item滑动删除效果(已解决listview点击问题)
领导看到iphone上tableview有个滑动删除的效果,要求在android上也实现,搜了下资料,实现起来比较简单,可弄到后面,居然不能点击了,把一篇文章中的代码修改了一下,捣鼓了一番,搞定,下面 ...
- MOS管体二极管的作用
这里有两种解释: 1.mos管本身自带有寄生二极管,作用是防止VDD过压的情况下,烧坏mos管,因为在过压对MOS管造成破坏之前,二极管先反向击穿,将大电流直接到地,从而避免MOS管被烧坏. 2.防止 ...
- MVC5框架解析之Controller的创建
在上一讲中我们介绍了MvcHandler,知道在Handler里面注入两个接口属性分别为IControllerFactory和IController的factory和controller.并且通过IO ...
- PHP之路——大文件上传
修改php.ini 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本最大执行时间,超过这个时间就会报错 3.upl ...
- 分享七款视差滚动效果的jQuery 插件
视差(Parallax)是指从不同的点看一个物体时形成的视觉差异,这个名词是源自希腊文的παράλλαξις (parallaxis),意思是”改变”.在网页设计中,视差滚动(Parallax Scr ...
- bzoj 3160: 万径人踪灭 manachar + FFT
3160: 万径人踪灭 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 133 Solved: 80[Submit][Status][Discuss] ...
- NAT(NAPT)地址转换过程
整理自NAT地址转换过程 注:本文实质讲的是NAPT(Network Address Port Translation),即网络端口地址转换.NAPT与动态地址NAT不同,它将内部连接映射到外部网络中 ...