第一个wxWidgets程序
来源:互联网 发布:衣柜造型设计软件 编辑:程序博客网 时间:2024/04/29 14:00
第一个wxWidgets程序 [原] 2006-11-19 22:13:00 标签:wxWidgets 缩起正文 字号:大 小 第一个wxWidgets程序(2006年11月19日)
几乎看了一天的文档,还不知道从哪里开始,心想使用cmake做编译工具可是《Cross-Platform GUI Programming with wxWidgets 》教材上推荐使用Bakefile,并且以Bakefile为例子。重点阅读了wx-config这部分的内容还是不得要领。后来在教材中看到在linux下安装并建立环境的话可以参考docs/x11(可以是相应目录)目录下的install.txt。在install.txt看到说明在安装完之后执行g++ myfoo.cpp `wx-config --libs --cxxflags` -o myfoo 来编译程序才弄清楚原来wx-config是这样用的。
事不宜迟,在官方网站(http://www.wxwidgets.org)下载hworld.cpp——一个最简单的例程,拷贝到我的虚拟机上,然后执行g++ hworld.cpp `wx-config --libs --cxxflags` -o hworld。感谢上帝没有一个错误告警信息,马上执行一下出来一个错误:"libwx_x11univ_xrc-2.6.so.0:cannot open share......"。应该是共享库找不到,不管三七二十一执行ldconfig,然后再次执行hworld,呵呵成功了,xwindow显示了一个最简单的窗口。
这个窗口虽然简单但是我第一次在linux系统编出一个xwindow的窗口,意义重大,真是感谢wxWidgets,让我用如此简单的方式编写一个xwindow窗口,而且还是跨平台的,虽然我现在还不知道如何将这个程序跨到mswindows,但不管这么说它天生具有跨平台的特性,太好了。
附:hworld源程序
/*
* hworld.cpp
* Hello world sample by Robert Roebling
*/
#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);
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( "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, "&About..." ) ;
menuFile->AppendSeparator();
menuFile->Append( ID_Quit, "E&xit" ) ;
wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append( menuFile, "&File" ) ;
SetMenuBar( menuBar ) ;
CreateStatusBar();
SetStatusText( "Welcome to wxWindows!" ) ;
}
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(TRUE);
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxMessageBox("This is a wxWindows Hello world sample",
"About Hello World", wxOK | wxICON_INFORMATION, this) ;
}
几乎看了一天的文档,还不知道从哪里开始,心想使用cmake做编译工具可是《Cross-Platform GUI Programming with wxWidgets 》教材上推荐使用Bakefile,并且以Bakefile为例子。重点阅读了wx-config这部分的内容还是不得要领。后来在教材中看到在linux下安装并建立环境的话可以参考docs/x11(可以是相应目录)目录下的install.txt。在install.txt看到说明在安装完之后执行g++ myfoo.cpp `wx-config --libs --cxxflags` -o myfoo 来编译程序才弄清楚原来wx-config是这样用的。
事不宜迟,在官方网站(http://www.wxwidgets.org)下载hworld.cpp——一个最简单的例程,拷贝到我的虚拟机上,然后执行g++ hworld.cpp `wx-config --libs --cxxflags` -o hworld。感谢上帝没有一个错误告警信息,马上执行一下出来一个错误:"libwx_x11univ_xrc-2.6.so.0:cannot open share......"。应该是共享库找不到,不管三七二十一执行ldconfig,然后再次执行hworld,呵呵成功了,xwindow显示了一个最简单的窗口。
这个窗口虽然简单但是我第一次在linux系统编出一个xwindow的窗口,意义重大,真是感谢wxWidgets,让我用如此简单的方式编写一个xwindow窗口,而且还是跨平台的,虽然我现在还不知道如何将这个程序跨到mswindows,但不管这么说它天生具有跨平台的特性,太好了。
附:hworld源程序
/*
* hworld.cpp
* Hello world sample by Robert Roebling
*/
#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);
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( "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, "&About..." ) ;
menuFile->AppendSeparator();
menuFile->Append( ID_Quit, "E&xit" ) ;
wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append( menuFile, "&File" ) ;
SetMenuBar( menuBar ) ;
CreateStatusBar();
SetStatusText( "Welcome to wxWindows!" ) ;
}
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(TRUE);
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxMessageBox("This is a wxWindows Hello world sample",
"About Hello World", wxOK | wxICON_INFORMATION, this) ;
}
- 第一个wxWidgets程序
- 第一个wxWidgets程序
- 第一个wxWidgets程序-helloworld
- wxWidgets教程01:第一个程序 HelloWorld
- ch1:用wxwidgets写的第一个程序
- 用 Visual C++ 2008 Express 编译你的第一个 wxWidgets 程序
- 用 Visual C++ 2008 Express 编译你的第一个 wxWidgets 程序
- 我的第一个作品(编程环境:Code::Blocks + wxWidgets)
- 第一个C++程序
- 第一个MIDP程序
- 第一个Swing程序
- 第一个Ruby程序
- 第一个Python程序
- 第一个RoR程序
- 第一个RMI程序!
- VBA 第一个程序
- 第一个C程序
- 第一个VHDL程序
- 郁闷中...找不到接收我的党组织呀... :(
- 使用C#调用外部Ping命令获取网络连接情况
- VCC、VDD和VSS三种标号的区别
- 利用Xmlhttp 分块上传文件
- [web软件提速方案1]提升JSP应用程序的七大绝招
- 第一个wxWidgets程序
- ORACLE 10g FOR LINUX在FEDORA CORE 6下的安装要点
- js使用小技巧
- 自己写的一个很简单的词法判断小程序
- javascript数字取整数的三种函数
- 岡山大学项目完结后总结一些想法
- 网络
- Google Maps开始支持360度全景街道风光了
- VB.net实现的一个简单的P2P示例