使用wxdindows开发跨平台的界面

2016-02-19 18:09 5 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的使用wxdindows开发跨平台的界面,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】


  使用wxdindows开发跨平台的界面
  
  无双
  发表于loveunix.net
  mushuang.forumer.com
  Linuxsir.com
  
  转载请保留出处
  
  使用wxwindows开发的一个例子
  添加新的投票 订阅此主题 邮寄此主题 打印此主题
  无双
  发帖时间 2004-04-01 21:21:36
  
  
  天才猪
  
  
  组别: 治理员
  金钱: 3555 两
  帖子数量: 1036
  精华帖数: 47
  注册时间: 2003-09-16
  
  
  
  
  照着例子进行了半个小时
  写出了一个简单的例子 当然后面会在它上面添加功能 目标是实现一个邮件客户端(与linuxaid的某兄打赌的 欢迎大家参与 假如想参与的话分一下工好了 )
  
  WxWindows开发十分简单 我觉得比使用mfc还要简单
  主程序的入口是wxApp 类的派生类
  界面的入口是wxFrame的派生类
  事件可以像是windows那样使用宏定义的方法
  也可以通过设置事件处理的函数进行调用 (前几天写了个小程序 假如兴奋的话 在这里找就是 )
  
  另外wxWindows有丰富的文档 这几天wxwindows.sf.net上不去了 不知道为什么又把sf给封了 不过其它地方也有不少好文档 照写就是了 让你体会到快速开发界面的感觉
  
  makefile
  这个Makefile是在linux下的 照它的例子抄了一个
  
  
  代码
  
  #
  # File: Makefile for samples
  # Author: Robert Roebling
  # Created: 1999
  # Updated:
  # Copyright: (c) 1998 Robert Roebling
  #
  # This makefile requires a Unix version of wxWindows
  # to be installed on your system. This is most often
  # done typing "make install" when using the complete
  # sources of wxWindows or by installing the two
  # RPM packages wxGTK.XXX.rpm and wxGTK-devel.XXX.rpm
  # under Linux.
  #
  
  CXX = $(shell wx-config --cxx)
  
  PROGRAM = MailFox
  
  OBJECTS = $(PROGRAM).o MainGUI.o
  
  # implementation
  
  .SUFFIXES: .o .cpp
  
  .cpp.o :
  $(CXX) -c `wx-config --cxxflags` -o $@ $
  
  all: $(PROGRAM)
  
  $(PROGRAM): $(OBJECTS)
  $(CXX) -o $(PROGRAM) $(OBJECTS) `wx-config --libs`
  
  clean:
  rm -f *.o $(PROGRAM)
  
  
  这个帖子已被 无双 于 2004-04-01 21:23:13 编辑
  
  
  --------------------
  偶还是愿意看提问时写清楚问题与标题的贴子:D
  IP: [ ---------- ]
  无双
  发帖时间 2004-04-01 21:24:37
  
  
  天才猪
  
  
  组别: 治理员
  金钱: 3555 两
  帖子数量: 1036
  精华帖数: 47
  注册时间: 2003-09-16
  
  
  
  
  应用程序类 这是主程序入口 这个类对程序和界面进行初始化
  
  Oninit是初始化函数 可以看wxwindows定义
  
  代码
  
  #ifndef MAILFOX_H_
  #define MAILFOX_H_
  
  class MailFox:public wxApp{
  public:
  virtual bool OnInit();
  };
  
  #endif
  
  
  --------------------
  偶还是愿意看提问时写清楚问题与标题的贴子:D
  IP: [ ---------- ]
  无双
  发帖时间 2004-04-01 21:29:11
  
  
  天才猪
  
  
  组别: 治理员
  金钱: 3555 两
  帖子数量: 1036
  精华帖数: 47
  注册时间: 2003-09-16
  
  
  
  
  
  应用程序入口 看起来很简单
  创建界面也很简单 就只是声明了wxFrame的继续类
  并使用Show()让它显示
  使用SetTopWindow 设置这个窗口为应用程序的主窗口
  代码
  
  // author:wushuang
  // 2004/04/01
  // GPL
  // desc: mainapp
  //
  #include wx/wx.h
  #include "MainGUI.h"
  #include "MailFox.h"
  
  IMPLEMENT_APP(MailFox)
  
  bool MailFox::OnInit()
  {
  MainGUI *pGUI = new MainGUI("MailFox邮件程序",0,0,640,480);
  pGUI-Show(true);
  SetTopWindow(pGUI);
  return true;
  }
  
  
  --------------------
  偶还是愿意看提问时写清楚问题与标题的贴子:D
  IP: [ ---------- ]
  无双
  发帖时间 2004-04-01 21:32:43
  
  
  天才猪
  
  
  组别: 治理员
  金钱: 3555 两
  帖子数量: 1036
  精华帖数: 47
  注册时间: 2003-09-16
  
  
  
  
  现在到主界面窗口了
  主界面窗口从wxFrame派生 在构造函数中进行界面的初始化 (等下会看到 )
  使用DECLARE_EVENT_TABLE声明要使用事件处理宏 等下也会看到
  当然可以不使用事件处理宏 可以查找我发的前一个例子
  
  wxwindows中使用的控件,在程序退出时会自动清除 所以在析构中不必使用free
  
  代码
  
  #ifndef MAINGUI_H_
  #define MAINGUI_H_
  
  // toolbar and menubar commands
  enum {
  IDC_QUIT = 1,
  IDC_ABOUT
  };
  
  class MainGUI:public wxFrame{
  wxMenuBar *menuBar;
  wxMenu *menuFile;
  
  void OnAbout(wxCommandEvent &event);
  void OnExit (wxCommandEvent &event);
  public:
  MainGUI(const wxChar *Title,int XPos,int ypos,int width,int height);
  ~MainGUI();
  
  DECLARE_EVENT_TABLE();
  };
  
  #endif
  
  
  --------------------
  偶还是愿意看提问时写清楚问题与标题的贴子:D
  IP: [ ---------- ]
  无双
  发帖时间 2004-04-01 21:36:38
  
  
  天才猪
  
  
  组别: 治理员
  金钱: 3555 两
  帖子数量: 1036
  精华帖数: 47
  注册时间: 2003-09-16
  
  
  
  
  界面的实现
  添加控件在构造函数中进行
  注重构造函数中对父类进行了初始化wxFrame((wxFrame*)NULL,-1,Title,wxPoint(xpos,ypos),wxSize(width,height)
  
  事件的定义 声明用哪个函数处理哪个事件
  
  BEGIN_EVENT_TABLE(MainGUI,wxFrame)
  EVT_MENU(IDC_ABOUT,MainGUI::OnAbout)
  EVT_MENU(IDC_QUIT,MainGUI::OnExit)
  END_EVENT_TABLE()
  
  
  这个界面只是添加了一个菜单 然后还有一个状态栏
  没有其它控件
  
  另外 把这个文件保存成MainGUI.cpp
  上面对应的头文件为MainGUI.h
  
  上面的应用程序的类文件名分别为
  MailFox.cpp MailFox.h
  
  保存好 编译并执行就可以看到了
  
  
  代码
  
  #include wx/wx.h
  #include "MainGUI.h"
  
  
  
  MainGUI::MainGUI(const wxChar *Title,int xpos,int ypos,int width,int height)
  :wxFrame((wxFrame*)NULL,-1,Title,wxPoint(xpos,ypos),wxSize(width,height))
  {
  // create menubar and menu
  menuBar = new wxMenuBar;
  if( menuBar )
  menuFile = new wxMenu;
  else
  
   menuFile = NULL;
  
  if(!menuFile){
  delete menuBar;
  return;
  }
  
  menuFile-Append(IDC_ABOUT,"关于");
  menuFile-Append(IDC_QUIT,"退出");
  menuBar-Append(menuFile,"文件");
  SetMenuBar(menuBar);
  CreateStatusBar(3);
  SetStatusText("欢迎使用MailFox邮件软件");
  }
  
  
  MainGUI::~MainGUI()
  {
  }
  
  BEGIN_EVENT_TABLE(MainGUI,wxFrame)
  EVT_MENU(IDC_ABOUT,MainGUI::OnAbout)
  EVT_MENU(IDC_QUIT,MainGUI::OnExit)
  END_EVENT_TABLE()
  
  void MainGUI::OnAbout(wxCommandEvent& event)
  {
  wxMessageDialog aboutDialog(this,"MailFox邮件软件,新的邮件客户端",
  "关于",wxOK);
  aboutDialog.ShowModal();
  }
  
  void MainGUI::OnExit(wxCommandEvent &event)
  {
  Close(true);
  }
  
  __________________
  http://mushuang.forumer.com
  http://loveunix.onlinecq.com
  
  [IMG]http://www.loveunix.net/style_images/1/Logo2.gif[/IMG]
  欢迎参观我的论坛

来源:http://www.tulaoshi.com/n/20160219/1616924.html

延伸阅读
我对与solaris ,hp ,windows这三个平台的动态库的实现,进行了探索,对于soloaris,hp等Unix平台来讲,主要是make文件的制作,而Windows下还需要对类头进行修饰. 本列主要实现了一个动态库和一个调用动态库的运行程序,动态库包括mytime.h ,mytime.cpp , 在windows下还需要dllt1.cpp ,这个包含动态库的DllMain入口函数, ...
标签: ASP
          自从Microsoft推出ASP技术后,由于ASP在创建动态交互式站点上的强大功能及其代码编写的简便性,使ASP在很多Internet/Intranet/Extranet网站上得到了极其广泛的应用,尤其是涉及到数据库操作的网站应用系统更是倾向于采用ASP技术。但由于众所周知的原因,ASP只能工作于MS自己的操...
本文为您提供关于 Eclipse 平台的概述,包括其起源和体系结构。本文首先简要讨论 Eclipse 的开放源代码性质及其对多种编程语言的支持,然后通过一个简单的程序例子展示 Java 开发环境。本文还将考查以插件扩展形式可用的一些软件开发工具,并展示一个用于 UML 建模的插件扩展。 !-- frame contents -- !-- /frame contents -- ...
J2EE是一个开放的、基于标准的开发和部署的平台,用于构建N层的、基于Web的、以服务端计算为核心的、模块化的企业应用。J2EE同时也是所有兼容J2EE标准的应用服务器产品的统一标识。Sun公司领导着J2EE规范和标准的制定,但同时很多公司如IBM、BEA也为该标准的制定贡献了很多力量,所以J2EE每一个新规范的推出,都体现着整个业界对技术的共同认同...
假如你正在写从文件或网络读写数据的跨平台C/C++代码,那么你必须明白有些问题是因语言,编译器,平台而不同的。 主要的问题是数据对齐,填充,类型大小,字节顺序和默认状态char是否有符号。 对齐 特定机器上,特定的数据被对齐于特定的边界。假如数据没有正确对齐,结果可能是效率降低甚至崩溃。 当你从I/O源读取数...

经验教程

128

收藏

41
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部