Dialog Blocks使用指南

本文介绍了如何利用DialogBlocks工具进行wxWidgets应用程序的界面设计和事件绑定,包括DialogBlocks的特性、使用步骤、VS工程配置以及编译设置。通过实例展示了创建HelloWorld工程的过程,强调了界面设计灵活性和事件控制的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://www.cppblog.com/zyzx

https://blog.csdn.net/mowangmm/article/details/38019871

1. 使用

          工欲善其事,必先利其器。在MFC上开发,有VS系列强大的可视化工具,基于wx的开发工具虽然没有VS、QT的界面设计器强大,但在灵活度上VS的界面设计器是没法比的(QT的没有用过,不做评论)。
         如果选择了wx库,了解几款基于其上的界面设计工具,会大大提高开发效率。

一、wx界面设计工具简介

         官方建议的工具集合:http://wiki.wxwidgets.org/Tools

         在刚开始的时候,我也尝试过几款工具(wxFormBuilder、wxDev-C++、wxDesigner等),但后来还是选择了DialogBlocks-4.18。对于这些工具的选择,各有特色。选择DialogBlocks,主要是因为其灵活度很大,当然缺点就是需要手工写代码来结合工具使用。但这点对于熟悉wx以后就不再是缺点,而是她最大的优点。

二、DialogBlocks简介

         DialogBlocks官方主页:http://www.anthemion.co.uk/dialogblocks/

三、DialogBlocks入门向导

         安装完成后,DialogBlocks有几个实例工程可以供大家参考。

    1、新建HelloWorld工程

          关闭这些后点击File->New Project进入工程向导。

          点击Next进入下一个选择页面

         Mode中有3个选项:
         Generate for C++:表示工具并不生成*.xrc(xml格式文件)配置文件,直接将窗口的一些信息(比如样式、大小、是否可见等等)直接写在源代码中,用相应的标记区别,由工具来维护此段代码区域。如果手工破坏了标记信息,工具将无法识别。
         Generate C++ for XRC:表示工具将窗口信息(…)写入相应的*.xrc配置文件中,代码块中只写加载这些配置的代码。这种方式十分适合,界面大小不一致,需灵活配置界面。代码块的事件关联每一个窗口控件唯一的ID。
         Generate XRC only:表示不生成源代码,只生成*.xrc配置文件。更灵活的将代码和界面设计的配置文件分开。代码块只需要通过窗口控件ID来控制其行为。

         后面一路next,默认选项即可。
         保存工程得到HelloWorld\HelloWorld.pjd文件,以后只要从此文件打开即可。

    2、新建主wxFrame或wxDialog

    3、添加其他控件

             修改启动的主Frame:Main window选项修改为HelloWorld Frame的ID编号。

   3、添加其他控件

            比如菜单、工具条、状态条、窗口里面的控件元素等等。

            注意窗口元素不是随意添加的,必须先搞清楚wx的窗口元素之间的关系。比如:wxFrame/wxDialog直接包容wxMenuBar、wxToolBar、wxStatusBar,而wxTextCtrl、wxComboBox、wxStaticText等等最好建立在wxBoxSizer之内。
            wxBoxSizer是wx的特色之一,它可以对其包含的控件进行自动调整。当然需要设定其自动调整属性。以上均使用默认的属性。


  
    四、HelloWorld的VS工程配置

            完成以上部分就说明最基本的界面框架已经做好了。我们还需要新建基于Win32的空HelloWorld工程,将DialogBlocks生成的*.h *.cpp文件添加HelloWorld工程中去。

            按照上一篇关于Win32部分的配置来设置本工程。

            编译运行(别忘了把wx库的*.dll文件…)结果会报出wxWidgets Assert忽略即可,原因是上面建立的wxToolBar\Tool没有找到对应的图标,把图标添加进去并设定wx资源加载路径即可。

   
    五、绑定控件事件控制

             在DialogBlock中选中wxButton:ID_BUTTON1切换右边视图到Event handlers,点选BUTTON_CLICK事件,并保存。绑定事件有两种方式,DialogBlocks采用的是静态绑定的方式,还一种是采用动态绑定事件。

           
           再找到HelloWorld类,并添加头文件#include <wx/msgdlg.h>
           void HelloWorld::OnButton1Click( wxCommandEvent& event )
            {
                      wxMessageBox(wxT("Hello World!\r\n单击了Button1Click!")); 
            }

           即可得到如下效果:

2.编译

 

要用DialogBlocks成功编译wxWidgets程序,关键在于Settings。第一次打开DialogBlocks的时候会让你选wxWidgets的路径,这样也就生成了WXWIN全局变量,并且知道了wxWidgets的版本号。接下来的许多路径设置都是基于WXWIN变量的,可以说在这点上DialogBlocks不会出现难以解决的问题。


点击Setttings-Configurations,点击Standard...选择GCC编译器,根据wxWidgets的编译情况,选择Debug或Release,以及是ASNI还是unicode。

然后是下方具体的编译链接设置。wxWidgets无论是在哪个软件中编译,编译链接设置都是差不多的,可以参考我上一篇文章在Xcode中的设置。

1、Build mode、unicode mode、shared mode、Modularity四项根据wxWidgets的编译情况选择。

2、Toolkit选wxosx/cocoa

3、wxWidgets build path写入编译wxWidgets所生成的目标文件夹,形如$(WXWIN)/build-cocoa-debug(注意这里全局变量WXWIN发挥作用了,后面的wx-config也是在这个文件夹里)

4、Minimum OS Version这个很重要,建议写入10.8。一方面版本太低的话,C++编译器会使用老的库,而10.5以上则使用C++11库,当前版本的wxWidgets需要C++11库,而昨天在Xcode下测试10.9 SDK会导致编译出来的程序崩溃,所以此处填写了10.8。

5、Linker flags写入$(shell $(WXWIN)/build-cocoa-debug/wx-config -libs),也就是从命令行的wx-config命令得到lib位置。注意此处文件夹名。另外,Compiler flag已经自动设置好了,不用管。


OK,设置完毕,可以创建界面了。创建完界面,可以从Edit选项卡切换到h或cpp选项卡进行程序编写,或者切换到event handlers进行事件设置。软件右边是各个控件的属性设置。

在项目上点右键-Test可以直接预览编写的程序。

测试好之后就可以编译生成了。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值