首页soui › MFC工程上创建SOUI环境并生成一个窗口

MFC工程上创建SOUI环境并生成一个窗口

MFC工程上创建SOUI环境
 准备工作
1、 从SVN获取SOUI项目代码,并编译成功。
2、 然后创建一个环境变量假定是%SOUIPATH%,这个环境变量指向的目录是SOUI源代码的目录。(如果安装了SOUI向导的话,这个环境变量会自动创建,SOUI向导的目录是:SOUI源代码目录下的wizard文件夹。双击wizard文件夹下的wizard.setup.exe文件并选择相应的VS版本就可以安装。)
操作步骤
1、 创建一个MFC 工程,然后把MFC自动生成的主对话框的资源以及类删除掉(因为我们要用SOUI作界面,所以MFC生成的对话框没必要保留)。
2、 在MFC工程的properties下的include下添加目录:(SOUIPATH)\SOUI\include;[Math Processing Error](SOUIPATH)\SOUI\bin;(SOUIPATH)\utilities\include;[Math Processing Error](SOUIPATH)\config;$(SOUIPATH)\components;
如图:

20160329083857356
3、 在MFC工程的properties下的Additional Dependencies下添加两个库文件souid.lib,utilitiesd.lib。
如图:
20160329084204743
4、 把Code Generation中的Runtime Libray(运行时库)从MDd修改为MTd,相应的需要把Use of MFC 改为Use MFC in a Static Library。(原因是SOUI默认的编译配置就是用MTd:mutithread+debug,多线程调试版,连接LIBMITD.lib库)。
如图:
20160329084229220
5、 把Language中的Treat WChar_t As Built in Type 改为Yes(/Zc:wchar_t)。(因为SOUI默认编译配置如此,不改的话,会报错)
如图:
20160329084248142
6、 准备资源文件并将所有资源文件放在Uires文件夹内,并存放在工程目录下。
Uires.idx:定义资源索引;
init.xml:定义全局UI的属性。
dlg_main.xml:主窗口的XML。
(xml的具体格式参考demo)
7、 资源文件准备好后,把这些xml文件都插入到工程中,如图。直接插入到工程中,工程无法读取这些资源文件,所以需要将Uires.idx中索引的文件转换为pe资源可以识别的资源类型+类型名的形式,这里SOUI作者提供了tools\uiresbuild.exe工具,我们需要用命令行实现资源的转换,具体命令行是:”$(SOUIPATH)\tools\uiresbuilder.exe” -i “%(FullPath)” -p uires -r .\res\soui_res.rc2
在uires文件的属性中添加Custom Build tool,然后将上述命令行输入,如图所示。如此一来,我们每次对资源文件进行操作,编译时都会自动调用命令实现资源转换。
20160329084305494
20160329084315299
8、 上述步骤完成并编译就会在res文件下生产soui_res.rc2文件,然后把改文件添加到工程的资源那文件中,然后我们还需要在.rc资源包含中加上我们生产的.rc2文件,具体操作步骤是在.rc的资源包括菜单中加上一段链接代码如图所示。
20160329084332087
9、 完成上述操作后,基本的SOUI环境就已经部署完成。此时编译程序的话会报出警告属于正常情况(这是SOUI内部代码和MFC相冲突的问题),报出的错误如图
20160329084355134
我们只需要在CommandLine中定义一下即可解决问题。具体操作如图:
20160329084422213

至此,SOUI的运行环境就完成了,并且可以编译成功。

工程中实现一个SOUI主窗口界面,具体步骤:
1、(在完成MFC工程中运行SOUI的环境的基础上进行如下操作)。如果在代码中用SOUI函数,必须要在stdafx.h文件中包含几个头文件如图所示:
20160329084439119
2、 完成上述操作之后我们需要写SOUI的入口函数了,这里我们在MFC的app类的InitInstance()函数中配置SOUI的入口函数。
3、 首先在app类的头文件处,添加:
1.

2.

这段代码是加载系统资源时用到的dll库。
3.

4、 在app类中的初始化函数中写入SOUI的一些基本配置代码如下,代码具体做了什么操作,请参考demo。

5、 实现主窗口的类并与dlg_main.xml绑定。
实现主窗口派生子SHostWnd,并在主窗口的构造函数中以如下格式绑定xml文件,即
CMainDlg ::CMainDlg() : SHostWnd(_T(“LAYOUT:XML_MAINWND”))
其中的XML_MAINWND是在uires.idx资源索引文件中定义的dlg_main.xml文件的name。
如图
20160329084503604
主窗口的类具体不做论述,可参照demo。
6、 在第4步的显示主窗口的括号中加入相应代码,并编写dlg_main.xml文件布局,编译即可产生一个SOUI窗口。
如图所示:
20160329084516713

发表评论