1. // Name: minimal.cpp
  2. // Purpose: Minimal wxWidgets sample
  3. // Author: Julian Smart
  4.  
  5. #include "wx/wx.h"
  6.  
  7. // Declare the application class
  8. //定义应用程序类
  9. class MyApp : public wxApp
  10. {
  11. public:
  12. // Called on application startup
  13. //这个函数将会在程序启动的时候被调用
  14. virtual bool OnInit();
  15. };
  16.  
  17. // Declare our main frame class
  18. //定义主窗口类
  19. class MyFrame : public wxFrame
  20. {
  21. public:
  22. // Constructor
  23. //主窗口类的构造函数
  24. MyFrame(const wxString& title);
  25.  
  26. // Event handlers
  27. //事件处理函数
  28. void OnQuit(wxCommandEvent& event);
  29. void OnAbout(wxCommandEvent& event);
  30.  
  31. private:
  32. // This class handles events
  33. //声明事件表
  34. DECLARE_EVENT_TABLE()
  35. };
  36.  
  37. // Implements MyApp& GetApp()
  38. //有了这一行就可以使用MyApp & wxGetApp()了
  39. DECLARE_APP(MyApp)
  40.  
  41. // Give wxWidgets the means to create a MyApp object
  42. //告诉主应用程序是哪个类的wxWidgets
  43. IMPLEMENT_APP(MyApp)
  44.  
  45. // Initialize the application
  46. //初始化程序
  47. bool MyApp::OnInit()
  48. {
  49. // Create the main application window
  50. //创建主窗口
  51. MyFrame *frame = new MyFrame(wxT("Minimal wxWidgets App"));
  52.  
  53. // Show it
  54. // 显示主窗口
  55. frame->Show(true);
  56.  
  57. // Start the event loop
  58. //开始事件处理循环
  59. return true;
  60. }
  61.  
  62. // Event table for MyFrame
  63. //类的事件表MyFrame
  64. BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  65. EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
  66. EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
  67. END_EVENT_TABLE()
  68.  
  69. void MyFrame::OnAbout(wxCommandEvent& event)
  70. {
  71. wxString msg;
  72. msg.Printf(wxT("Hello and welcome to %s"), wxVERSION_STRING);
  73.  
  74. wxMessageBox(msg, wxT("About Minimal"), wxOK | wxICON_INFORMATION, this);
  75. }
  76.  
  77. void MyFrame::OnQuit(wxCommandEvent& event)
  78. {
  79. // Destroy the frame
  80. //释放主窗口
  81. Close();
  82. }
  83.  
  84. #include "mondrian.xpm"
  85.  
  86. MyFrame::MyFrame(const wxString& title)
  87. : wxFrame(NULL, wxID_ANY, title)
  88. {
  89. // Set the frame icon
  90. //设置窗口图标
  91. SetIcon(wxIcon(mondrian_xpm));
  92.  
  93. // Create a menu bar
  94. //创建菜单条
  95. wxMenu *fileMenu = new wxMenu;
  96. wxMenu *helpMenu = new wxMenu;
  97.  
  98. // The "About" item should be in the help menu
  99. //添加“关于菜单项”
  100. helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog"));
  101.  
  102. fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"), wxT("Quit this program"));
  103.  
  104. // Now append the freshly created menu to the menu bar...
  105. //将菜单项添加到菜单条中
  106. wxMenuBar *menuBar = new wxMenuBar();
  107. menuBar->Append(fileMenu, wxT("&File"));
  108. menuBar->Append(helpMenu, wxT("&Help"));
  109.  
  110. // ... and attach this menu bar to the frame
  111. //然后将菜单条放置在主窗口上
  112. SetMenuBar(menuBar);
  113.  
  114. // Create a status bar just for fun
  115. //创建一个状态条让一切更有趣些
  116. CreateStatusBar();
  117. SetStatusText(wxT("Welcome to wxWidgets!"));
  118. }

《使用wxWidgets进行跨平台程序开发》chap02——一个简单的应用程序的更多相关文章

  1. 编写Java程序,实现一个简单的echo程序(网络编程TCP实践练习)

    首先启动服务端,客户端通过TCP的三次握手与服务端建立连接: 然后,客户端发送一段字符串,服务端收到字符串后,原封不动的发回给客户端. ECHO 程序是网络编程通信交互的一个经典案例,称为回应程序,即 ...

  2. 使用Go开发一个简单的服务器程序

    最近有个小项目,需要一个简单的后台程序来支撑,本来想用Nodejs来做,但是由于本人js一直很菜,并且很讨厌callback,虽然我也很喜欢异步模型,但我一直都觉得JS是反人类的.后台就用了go处理, ...

  3. 编写一个简单的C++程序

    编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

  4. 开发部署一个简单的Servlet

    Servlet是一个执行在服务器端的Java Class文件,载入前必须先将Servlet程序代码编译成.class文件,然后将此class文件放在servlet Engline路径下.Servlet ...

  5. 一个简单的flask程序

    初始化 所有Flask程序都必须创建一个程序实例. 程序实例是Flask类的对象,经常使用下述代码创建: from flask import Flask app = Flask(__name__) F ...

  6. Java入门篇(一)——如何编写一个简单的Java程序

    最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...

  7. (原创)如何使用boost.asio写一个简单的通信程序(一)

    boost.asio相信很多人听说过,作为一个跨平台的通信库,它的性能是很出色的,然而它却谈不上好用,里面有很多地方稍不注意就会出错,要正确的用好asio还是需要花一番精力去学习和实践的,本文将通过介 ...

  8. 什么是消息循环,一个简单的win32程序如何运行?

    预备知识 1.什么是句柄? (HANDLE) 在win32编程中有各种句柄,那么什么是句柄呢? #define DECLARE_HANDLE(name) struct name##_ { int un ...

  9. 微信小程序开发系列五:微信小程序中如何响应用户输入事件

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

随机推荐

  1. Plugin 'FEDERATED' is disabled 或 1067错误 启动错误与“服务 mysql 意外停止”解决方法

    MYSQL启动报1067错误,系统日志中是“服务 mysql 意外停止” Mysql日志中则是:“Plugin 'FEDERATED' is disabled” 网我在网上找到解决方案:1.在MY.I ...

  2. linux扩展lvm磁盘

    env: centos 6.5 x64 hyper-v虚拟机 这个方法可以在当前运行的系统中扩展root磁盘 详细步骤 之前想创建的一个虚拟机的磁盘空间不够用了,所以想扩容一下磁盘. 正好使用的时候是 ...

  3. Sumbline编译Less

    Less教程 Sublime Text 2的Less2Css插件介绍与安装 网址 http://fdream.net/blog/article/783.aspx 如果出现node.exe不是内部命令的 ...

  4. android中listview的item滑动删除效果(已解决listview点击问题)

    领导看到iphone上tableview有个滑动删除的效果,要求在android上也实现,搜了下资料,实现起来比较简单,可弄到后面,居然不能点击了,把一篇文章中的代码修改了一下,捣鼓了一番,搞定,下面 ...

  5. MOS管体二极管的作用

    这里有两种解释: 1.mos管本身自带有寄生二极管,作用是防止VDD过压的情况下,烧坏mos管,因为在过压对MOS管造成破坏之前,二极管先反向击穿,将大电流直接到地,从而避免MOS管被烧坏. 2.防止 ...

  6. MVC5框架解析之Controller的创建

    在上一讲中我们介绍了MvcHandler,知道在Handler里面注入两个接口属性分别为IControllerFactory和IController的factory和controller.并且通过IO ...

  7. PHP之路——大文件上传

    修改php.ini 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本最大执行时间,超过这个时间就会报错 3.upl ...

  8. 分享七款视差滚动效果的jQuery 插件

    视差(Parallax)是指从不同的点看一个物体时形成的视觉差异,这个名词是源自希腊文的παράλλαξις (parallaxis),意思是”改变”.在网页设计中,视差滚动(Parallax Scr ...

  9. bzoj 3160: 万径人踪灭 manachar + FFT

    3160: 万径人踪灭 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 133  Solved: 80[Submit][Status][Discuss] ...

  10. NAT(NAPT)地址转换过程

    整理自NAT地址转换过程 注:本文实质讲的是NAPT(Network Address Port Translation),即网络端口地址转换.NAPT与动态地址NAT不同,它将内部连接映射到外部网络中 ...