博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows使用WxWidgets开发界面(c++)环境搭建
阅读量:6637 次
发布时间:2019-06-25

本文共 4620 字,大约阅读时间需要 15 分钟。

 

一直想学习wxWidgets,之前使用的都是wxPython,现在终于鼓起勇气学习这个了,发现原来是基于vc6.0开发的。所以最好的学习办法就是安装vistual studio 2010,方便学习看代码。wxWidgets里面也有demo。

基本上wxWidgets是和MFC类似的。
参考:

Similarity to MFC

MFC and wxWidgets macros

MFC version wxWidgets version
BEGIN_MESSAGE_MAP BEGIN_EVENT_TABLE
END_MESSAGE_MAP END_EVENT_TABLE
DECLARE_DYNAMIC DECLARE_CLASS
DECLARE_DYNCREATE DECLARE_DYMAMIC_CLASS
IMPLEMENT_DYNAMIC IMPLEMENT_CLASS
IMPLEMENT_DYNCREATE IMPLEMENT_DYNAMIC_CLASS
IsKindOf(RUNTIME_CLASS(CWindow)) IsKindOf(CLASSINFO(wxWindow))

MFC and wxWidgets classes

Miscellaneous Classes
MFC version wxWidgets version
CWinApp
CObject
CCmdTarget
CCommandLineInfo
CMenu , , 
CWaitCursor
CDataExchange
Window Classes
MFC version wxWidgets version
CFrameWnd
CMDIFrameWnd
CMDIChildWnd
CSplitterWnd
CToolBar
CStatusBar
CReBar , but see contrib/src/fl and , 
CPropertyPage
CPropertySheet
Dialog Classes
MFC version wxWidgets version
CDialog
CColorDialog
CFileDialog
CFindReplaceDialog
CFontDialog
CPageSetupDialog
CPrintDialog
Control Classes
MFC version wxWidgets version
CAnimateCtrl , wxAnimationCtrl
CButton
CBitmapButton
CComboBox
CDateTimeCtrl
CEdit
CHotKeyCtrl None, but see Keybinder
CListBoxCDragListBox
CCheckListBox
CListCtrl
CMonthCalCtrl
CProgressCtrl
CReBarCtrl None, but see contrib/src/fl and , 
CRichEditCtrl
CScrollBar
CSliderCtrl
CSpinButtonCtrl
CStatic , , , 
CStatusBarCtrl
CTabCtrl
CToolBarCtrl
CToolTipCtrl
CTreeCtrl
Graphics Classes
MFC version wxWidgets version
CBitmap , , , 
CBrush
CPen
CFont
CImageList
CPalette
CRgn
CClientDC
CMetaFileDC
CPaintDC
CWindowDC
CDC
Data Structure Classes
MFC version wxWidgets version
CArrayCObArrayCPtrArray
CStringArray
CDWordArrayCByteArrayCUIntArray
CListCPtrListCObList
CStringList
CMap
CString
CPoint
CRect
CSize
CTime
CTimeSpan
COleVariant
Internet Classes
MFC version wxWidgets version
CSocket
CFtpConnection
CHttpConnection
Document/View Classes
MFC version wxWidgets version
CDocument
CView
CDocTemplateCSingleDocTemplateCMultiDocTemplate
Drag and Drop Classes
MFC version wxWidgets version
COleDataSource
COleDropSource
COleDropTarget
File Classes
MFC version wxWidgets version
CFile , , 
CMemFile
CSocketFile
CRecentFileList
Multithreading Classes
MFC version wxWidgets version
CWinThread
CCriticalSection
CMutex
CSemaphore
非常经典的WxWidgets架构图。

1,下载

下载安装文件

http://sourceforge.net/projects/wxwindows/files/
安装文件:
wxWidgets-2.8.12(特别注意下不要使用开发版本,要使用稳定版本)

2,开发环境使用 visual studio 2010 

安装IDE参考:
http://blog.csdn.net/freewebsys/article/details/12028265

3,安装wxwdiget(基于源码编译安装)

下载zip文件
打开工程D:/wxWidgets-2.8.12/build/msw/wx.dsw

 

可以使用exe安装,(相当于解压缩源代码,不是安装)也可以使用zip解压缩,两个都是将源代码放到一个目录,没有啥区别。

然后编译,否则不能使用!!!!!!

wxWidgets使用的是vc6.0开发的,需要转换成vistual studio 2010。(IDE会自动转换的,耐心等待)

转换完成之后直接build就行了。

编译完成没有任何错误信息。说明安装成功。

4,编译demo

在安装后的wxWidgets-2.9.5/samples目录下面有samples.dsw
双击就可以启动visual studio了,同样需要转换成工程。
继续等待。转换完成之后就可以编译了。
里面的demo都可以编译成功,运行如下:

 

转换完成之后就可以进行编译了。发现编译有4个失败的。不过没有关系大多数成功了。

运行一个demo:

丰富的demo找了几个运行下效果如下:

一个简单的播放器

一个所有组件的demo。比较全。

5,WxWidgets的一个helloworld

/* * 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);}

其他的继续研究。。。

其他参考:

 

http://www.cnzui.com/archives/962

http://blog.csdn.net/chinabinlang/article/details/6904143

http://www.codeproject.com/Articles/11515/Introduction-to-wxWidgets

 

你可能感兴趣的文章
高并发高可用的架构实践-剖析架构(三)
查看>>
CentOS6.2编译安装Nginx1.2.0
查看>>
Part 10.网络编程--网络通信过程
查看>>
java 不同list 添加元素
查看>>
正在调用的 ServicedComponent 配置不正确(请使用 regsvcs 重新注册)
查看>>
jquery基本
查看>>
Aspose.Cells 根据Excel模板导出数据统计
查看>>
FrameLsyout
查看>>
UML图概述
查看>>
我的暑假周记2018.8.19
查看>>
结对-及格成绩查询-开发过程
查看>>
配置COCO API(安装COCO)
查看>>
内存泄露
查看>>
python使用get在百度搜索并保存第一页搜索结果
查看>>
如何使用鲁大师进行驱动备份
查看>>
正则练习
查看>>
Linux 第三天
查看>>
在vue中关于element UI 中表格实现下载功能,表头添加按钮,和点击事件失效的解决办法。...
查看>>
软件需求模式阅读笔记之六
查看>>
商城项目搭建
查看>>