C++&wxWidgets 跨平台窗口程序开发(一,概述)
2010-05-30 22:50
375 查看
如何在保障程序性能的前提下让程序跨平台? wxWidgets 提供了一个可能. wxWidgets 原名wxWindows,
是一个历史悠久开源的跨平台C++程序库, 不过就像那些很酷的东西一样, 它也衍生出很多其他语言版本, 比如
wxPython(Python),
wxPerl(Perl),
wxRuby(Ruby),
wxSmalltalk(Smalltalk), wx4j(Java) 等等, 还有时下很红火的 .net, 名叫wx.NET.
关于wxWidgets和各种变种的资料您可以去google或者维基百科了解, 这里就不再废话了.
首先我要声明, 在这方面, 我是初学者. 它隐含的一层意思就是, 如果你是专家的话, 可以直接跳过整篇文章. 我将在接下来的文章试验如何在
Linux和Windows 平台下编译一个用C++写的简单的窗口程序. (虽然wxWidgets也支持苹果的操作系统,
不过由于我的钱包不支持,所以这里就不能试验了,但估计和Linux&Windows没多大差别).
由于我打算在后面用不同的章节分开讲Linux和Windows, 所以在这里现讲一下于平台无关的东西.
更多的资讯请访问我的主页 www.hyfree.net
一. 试验代码
[/code]
既然是体现跨平台的特点, 我们将一字不改的在不同的平台下编译这份代码. 代码比较简单, 和常见的套路一样,
创建一个应用程序(App), 一个主窗口(Frame), 为主窗口加一个主菜单和一个状态条, 并处理两个菜单项的事件.
最终运行效果是这样子的:
![](http://www.hyfree.net/wp-content/uploads/2010/05/Screenshot-2.png)
(Ubuntu 10.04)
![](http://www.hyfree.net/wp-content/uploads/2010/05/helloworld_windows-1.png)
(Windows XP)
二. 试验步骤
首先是安装wxWidgets, 不同平台上略有差别; 然后用命令行编译上面的代码; 最后用IDE来编译代码.
好, 概要就说到这里, 接下来动手吧
是一个历史悠久开源的跨平台C++程序库, 不过就像那些很酷的东西一样, 它也衍生出很多其他语言版本, 比如
wxPython(Python),
wxPerl(Perl),
wxRuby(Ruby),
wxSmalltalk(Smalltalk), wx4j(Java) 等等, 还有时下很红火的 .net, 名叫wx.NET.
关于wxWidgets和各种变种的资料您可以去google或者维基百科了解, 这里就不再废话了.
首先我要声明, 在这方面, 我是初学者. 它隐含的一层意思就是, 如果你是专家的话, 可以直接跳过整篇文章. 我将在接下来的文章试验如何在
Linux和Windows 平台下编译一个用C++写的简单的窗口程序. (虽然wxWidgets也支持苹果的操作系统,
不过由于我的钱包不支持,所以这里就不能试验了,但估计和Linux&Windows没多大差别).
由于我打算在后面用不同的章节分开讲Linux和Windows, 所以在这里现讲一下于平台无关的东西.
更多的资讯请访问我的主页 www.hyfree.net
一. 试验代码
#include "wx/wx.h" class MyApp: public wxApp { virtual bool OnInit(); }; class MyFrame: public wxFrame { public: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); private: DECLARE_EVENT_TABLE() }; enum { ID_Quit = 1, ID_About, }; BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(ID_Quit, MyFrame::OnQuit) EVT_MENU(ID_About, MyFrame::OnAbout) END_EVENT_TABLE() IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { MyFrame *frame = new MyFrame( wxT("Hello World"), wxPoint(50,50), wxSize(450,340) ); frame->Show( true ); SetTopWindow( frame ); return true; } MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame((wxFrame *)NULL, -1, title, pos, size) { wxMenu *menuFile = new wxMenu; menuFile->Append( ID_About, wxT("&About...") ); menuFile->AppendSeparator(); menuFile->Append( ID_Quit, wxT("E&xit") ); wxMenuBar *menuBar = new wxMenuBar; menuBar->Append( menuFile, wxT("&File") ); SetMenuBar( menuBar ); CreateStatusBar(); SetStatusText( wxT("Welcome to wxWidgets!") ); } void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { Close( true ); } void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { wxMessageBox( wxT("This is a wxWidgets' Hello world sample"), wxT("About Hello World"), wxOK | wxICON_INFORMATION ); }
[/code]
既然是体现跨平台的特点, 我们将一字不改的在不同的平台下编译这份代码. 代码比较简单, 和常见的套路一样,
创建一个应用程序(App), 一个主窗口(Frame), 为主窗口加一个主菜单和一个状态条, 并处理两个菜单项的事件.
最终运行效果是这样子的:
![](http://www.hyfree.net/wp-content/uploads/2010/05/Screenshot-2.png)
(Ubuntu 10.04)
![](http://www.hyfree.net/wp-content/uploads/2010/05/helloworld_windows-1.png)
(Windows XP)
二. 试验步骤
首先是安装wxWidgets, 不同平台上略有差别; 然后用命令行编译上面的代码; 最后用IDE来编译代码.
好, 概要就说到这里, 接下来动手吧
相关文章推荐
- C++&wxWidgets 跨平台窗口程序开发(二,Linux篇)
- 【Virtual C++ 3D游戏开发】前置知识 三 <Win32窗口程序剖析>
- 跨平台编程资源,c & c++开发
- 使用wxWidgets进行跨平台的C++开发
- 跨平台C++程序开发经验小结
- 使用wxWidgets开发跨平台的GUI程序
- 使用wxWidgets进行跨平台的C++开发
- wx网罗系列之翔实:使用C++开发wxWidgets程序
- 使用wxWidgets进行跨平台的C++开发
- DialogBlocks结合wxvisualsetup开发wxWidgets跨平台程序
- 使用wxWidgets进行跨平台的C++开发
- Windows游戏开发感想&&一个完整的Windows窗口程序
- 使用wxWidgets进行跨平台的C++开发
- Qt,一个跨平台的C++应用程序程序开发框架
- 跨平台编程资源,c & c++开发
- 在VS2005下用 wxWidgets 开发跨平台的GUI程序
- 使用wxWidgets进行跨平台的C++开发
- wxWidgets 跨平台C++开发
- 使用wxWidgets进行跨平台的C++开发
- 使用wxWidgets开发跨平台的GUI程序