zoukankan      html  css  js  c++  java
  • wxWidgets:入门

    0. 介绍

        wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供GUI和其它工具。目前的3.0.0版本支持所有版本的Windows、带GTK+或Motif的Unix和MacOS。wxWidgets在不同平台上使用Native API完成GUI相关工作,所以性能和最终App的体积都比Qt好很多。经过十多年的发展,其稳定性、兼容性和相关文档都已日臻完善。在前几年其开发文档曾遭受诟病,但最新的3.0.0所带文档已相当完整。

    1. 下载

        下载地址:http://www.wxwidgets.org/downloads/

        此处我们下载Windows安装版。

    2. 编译

        安装完成后,使用VS20xx打开安装目录下的build/msw/xxx.sln文件。建议把每个configuration都build一次。

        注:据文档称,如果一次编译不能全部通过,可能是子项目编译顺序引起的问题,只要再编译一到两次就可以了。在我的VS2012上一次编译通过。

    3. 编译完成后,让我们来做一个带窗口的最小程序。

        新建一个vc++空项目;

        添加五个文件:

        MyFrame.cpp MyFrame.h  (窗口Frame类,继承于wxFrame,将被MyApp实例化)

        MyApp.cpp MyApp.h (应用程序类,继承于wxApp,在OnInit成员函数中实例化MyFrame,将被main.cpp实例化)

        main.cpp (主文件,实例化MyApp)

    4. 工程包含目录中添加wxWidget安装目录下的include和include/msw

    5. 工程lib目录附加wxWidget安装目录下的lib/vc_lib

    6. 增加预处理_UNICODE

    7. MyFrame.h

    #ifndef MYFRAME_H
    #define MYFRAME_H
    
    #include <wx/wx.h>
    
    class MyFrame : public wxFrame
    {
    public:
        MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
    };
    
    #endif // MYFRAME_H

    8. MyFrame.cpp

    #include "MyFrame.h"
    
    // 代码想当简短,只是调用基类构造函数
    MyFrame :: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
                  : wxFrame(NULL, wxID_ANY, title, pos, size)
    {
    }

    9. MyApp.h

    #ifndef MYAPP_H
    #define MYAPP_H
    
    #include <wx/wx.h>
    
    class MyApp : public wxApp
    {
    public:
           // 我们需要重新实现基类虚函数
        virtual bool OnInit();
    };
    
    #endif // MYAPP_H

    10. MyApp.cpp

    #include "MyApp.h"
    #include "MyFrame.h"
    
    bool MyApp :: OnInit()
    {
          // 实例化窗口框架类
        MyFrame *myFrame = new MyFrame("MyApp", wxDefaultPosition, wxDefaultSize);
        myFrame->Show();
        return true;
    }

    11. main.cpp

    #include <wx/wx.h>
    
    #include "MyApp.h"
    #include "MyFrame.h"
    
    // 核心代码只需一行
    wxIMPLEMENT_APP(MyApp);

    12. 没什么问题的话,编译会顺利完成,运行后显示一个空窗口。

    13. 附加说明:wxApp::OnInit()相当于main函数,可以把它看作整个程序的入口。

    14. 结语

         早期的wxWidgets编程风格类似于MFC,其消息处理使用DECLARE_EVENT/BEGIN_EVENT_TABLE/END_EVENT_TABLE实现。新的wxWidgets可以像Qt的connect函数那样,使用bind函数完成消息和处理函数的动态绑定。应该说,wxWidgets正走在逐渐完美的路上。

        

  • 相关阅读:
    web访问权限实现方法-探面向对象的编码设计
    解析二进制反码算数求和
    可以把erp当做一个分支-找自己的方向
    电脑开机是怎样自动加载进程
    球管模型和Java
    发明和发现
    漂浮
    js中的一些循环
    ES5中新增的一些方法
    git的一些操作
  • 原文地址:https://www.cnblogs.com/byeyear/p/3483259.html
Copyright © 2011-2022 走看看