zoukankan      html  css  js  c++  java
  • Windows使用WxWidgets开发界面(c++)环境搭建

    一直想学习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 wxApp
    CObject wxObject
    CCmdTarget wxEvtHandler
    CCommandLineInfo wxCmdLineParser
    CMenu wxMenuwMenuBarwxMenuItem
    CWaitCursor wxBusyCursor
    CDataExchange wxValidator
    Window Classes
    MFC version wxWidgets version
    CFrameWnd wxFrame
    CMDIFrameWnd wxMDIParentFrame
    CMDIChildWnd wxMDIChildFrame
    CSplitterWnd wxSplitterWindow
    CToolBar wxToolBar
    CStatusBar wxStatusBar
    CReBar wxCoolBar, but see contrib/src/fl and wxAUIwxDockIt
    CPropertyPage wxPanel
    CPropertySheet wxNotebookwxPropertySheetDialog
    Dialog Classes
    MFC version wxWidgets version
    CDialog wxDialog
    CColorDialog wxColourDialog
    CFileDialog wxFileDialog
    CFindReplaceDialog wxFindReplaceDialog
    CFontDialog wxFontDialog
    CPageSetupDialog wxPageSetupDialog
    CPrintDialog wxPrintDialog
    Control Classes
    MFC version wxWidgets version
    CAnimateCtrl wxMediaCtrl, wxAnimationCtrl
    CButton wxButton
    CBitmapButton wxBitmapButton
    CComboBox wxComboBoxwxChoice
    CDateTimeCtrl wxDatePickerCtrl
    CEdit wxTextCtrl
    CHotKeyCtrl None, but see Keybinder
    CListBoxCDragListBox wxListBox
    CCheckListBox wxCheckListBox
    CListCtrl wxListCtrlwxListView
    CMonthCalCtrl wxCalendarCtrl
    CProgressCtrl wxGauge
    CReBarCtrl None, but see contrib/src/fl and wxAUIwxDockIt
    CRichEditCtrl wxTextCtrl
    CScrollBar wxScrollBar
    CSliderCtrl wxSlider
    CSpinButtonCtrl wxSpinButtonwxSpinCtrl
    CStatic wxStaticTextwxStaticLinewxStaticBoxwxStaticBitmap
    CStatusBarCtrl wxStatusBar
    CTabCtrl wxTabCtrl
    CToolBarCtrl wxToolBar
    CToolTipCtrl wxToolTip
    CTreeCtrl wxTreeCtrl
    Graphics Classes
    MFC version wxWidgets version
    CBitmap wxBitmapwxImagewxIconwxCursor
    CBrush wxBrush
    CPen wxPen
    CFont wxFont
    CImageList wxImageListwxIconBundle
    CPalette wxPalette
    CRgn wxRegion
    CClientDC wxClientDC
    CMetaFileDC wxMetaFileDC
    CPaintDC wxPaintDC
    CWindowDC wxWindowDC
    CDC wxDCwxMemoryDC
    Data Structure Classes
    MFC version wxWidgets version
    CArrayCObArrayCPtrArray wxArray
    CStringArray wxArrayString
    CDWordArrayCByteArrayCUIntArray wxArrayInt
    CListCPtrListCObList wxList
    CStringList wxArrayStringwxStringList
    CMap wxHashMap
    CString wxString
    CPoint wxPoint
    CRect wxRect
    CSize wxSize
    CTime wxDateTime
    CTimeSpan wxTimeSpanwxDateSpan
    COleVariant wxVariant
    Internet Classes
    MFC version wxWidgets version
    CSocket wxSocket
    CFtpConnection wxFTP
    CHttpConnection wxHTTP
    Document/View Classes
    MFC version wxWidgets version
    CDocument wxDocument
    CView wxView
    CDocTemplateCSingleDocTemplateCMultiDocTemplate wxDocTemplate
    Drag and Drop Classes
    MFC version wxWidgets version
    COleDataSource wxDataObject
    COleDropSource wxDropSource
    COleDropTarget wxDropTarget
    File Classes
    MFC version wxWidgets version
    CFile wxFilewxFFilewxTextFile
    CMemFile wxMemoryInputStreamwxMemoryOutputStream
    CSocketFile wxSocketInputStreamwxSocketOutputStream
    CRecentFileList wxFileHistory
    Multithreading Classes
    MFC version wxWidgets version
    CWinThread wxThread
    CCriticalSection wxCriticalSection
    CMutex wxMutex
    CSemaphore wxSemaphore

    非常经典的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

  • 相关阅读:
    并查集
    关于一些位运算的小记
    用ST解决RMQ问题
    寒假作业_4
    H
    卢卡斯 组合数
    并查集
    G
    F
    E
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3341721.html
Copyright © 2011-2022 走看看