您的位置:首页 > 编程语言 > C语言/C++

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

一. 试验代码

#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), 为主窗口加一个主菜单和一个状态条, 并处理两个菜单项的事件.

最终运行效果是这样子的:



(Ubuntu 10.04)



(Windows XP)

二. 试验步骤

首先是安装wxWidgets, 不同平台上略有差别; 然后用命令行编译上面的代码; 最后用IDE来编译代码.

好, 概要就说到这里, 接下来动手吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: