| 您的位置:首页 > 文档 > 编程技术 > |
文章分类热门文章 |
使用wxdindows开发跨平台的界面创建:2005-10-26 16:53:57 作者:Unlinux 来自: http://www.Unlinux.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.unlinux.com/doc/program/20051026/2317.html 【评论】 【加入收藏夹】 【大 中 小】 【打印】 【关闭】 ※ 相关链接
|