zoukankan      html  css  js  c++  java
  • Windows 7+Code::Blocks+wxWidgets实录(一)

    环境配置篇

    玩过Linux的人应该对Code::Blocks和wxWidgets并不陌生。

    Code::Blocks是一款非常有名的代码编辑器,在linux下用不惯vim的话,这是个不错的选择。但千万不要把它和编译器混淆,CB本身并没有独立编译程序的功能,需要调用系统已经安装好的编译器,比如Linux下的GCC,Windows下的VC编译器。所以,在系统本身并没有编译器的前提下,是不能使用CB的。不过在其官网下载的windows版的CB,可以选择安装MinGW编译器。这款编译器就是大名鼎鼎的GNU的Windows版本。

    wxWidgets是一个出色的应用程序开发框架,具有良好的跨平台性。用其开发图形界面应用程序简洁、高效。最新版本为wxWidgets2.9.3(http://sourceforge.net/projects/wxwindows/files/2.9.3/)。这个版本是未编译版本,不能直接进行wxWidgets程序的开发。推荐下载wxWidgets2.8.12版本的wxPack(http://wxpack.sourceforge.net/Main/Downloads),这个版本是编译好的,可以直接进行wx程序的开发。

    选择CB作为wxWidgets程序开发的编辑器是因为CB对wxWidgets程序有着先天的支持,并且可以配合wxSmith插件,可以进行可视化的图形界面设计,就像MFC的界面编辑一样。

    正常安装好后,就可以开始我们的wxWidgets程序开发了。

    wxWidgets小试牛刀

    建立一个新的wxWidgets项目,CB对wx的支持能力由此凸显出来了。

    2

    选择我们的wx版本,2.8

    3

    选择界面编辑器,选择wxSmith。wxFormatBuilder也是一款强大的界面编辑器,但是在Linux下很容易崩溃,给我留下了很不好的印象。况且,wxSmith是CB的一个插件,集成在IDE中,用起来更方便。

    4

    这里填写wx安装的根目录,CB会自动配置include、lib等目录。再一次赞一个CB对wx的支持。

    5

    6

    那些控件、布局可以自己动手试一试。如果搞过MFC、GTK、QT什么的,应该对这些都不陌生。

    wxWidgets是基于消息机制的,跟MFC很类似,跟QT不同。wx内部维护一个消息循环,对某一消息的响应函数,需要注册,像MFC的DDX等宏一样。wx注册位置在

    BEGIN_EVENT_TABLE(wxTestDialog,wxDialog)
        //(*EventTable(wxTestDialog)
        //*)
    END_EVENT_TABLE()

    比如,我们想为一个ID为ID_BTN_OK的按钮注册一个消息响应函数,可以这样:

    (1)在Main类中声明一个void OnOk(wxCommandEvent& event)的消息响应函数

    (2)在上述位置注册消息响应函数

    BEGIN_EVENT_TABLE(wxTestDialog,wxDialog)
        //(*EventTable(wxTestDialog)
        //*)
    EVT_MENU(ID_BTN_OK,wxTestDialog::OnOk)//注意这里,没有分号
    END_EVENT_TABLE()

    (3)实现OnOk函数。

    wx在消息循环中,没有判定消息的具体类型,比如我们只知道ID_BTN_OK这个按钮控件有事件发生,有消息产生,但并不知道是按下、松开、或是其他消息。我们需要在响应函数中,调用event.GetEventType来确定。

    以上是项目开发实录,会随着项目的开发,对wxWidgets进行更深入的记录。

  • 相关阅读:
    置换python2.7.13的opcode遇到的一些坑
    不思议迷宫:逆向后的放置play
    Vmware(vmdk)虚拟机到hyperv(vhd)虚拟机转换
    MJRefresh自定义刷新动画
    UIScrollView循环滚动1
    IOS开发中如何实现自动检测更新APP
    ios极光推送快速集成教程
    IOS中程序如何进行推送消息(本地推送,远程推送)2(上)
    IOS中程序如何进行推送消息(本地推送,远程推送)2(下)
    IOS中程序如何进行推送消息(本地推送,远程推送)
  • 原文地址:https://www.cnblogs.com/raymon/p/2396727.html
Copyright © 2011-2022 走看看