DuiVision开发教程(1)-创建DuiVision工程

DuiVision的源代码工程有两种类型:主程序和插件工程,可以通过人工方式创建DuiVision工程,也可以通过Visual Studio向导自动创建工程。

人工创建主程序的方法

1、创建一个基于DuiVision的界面程序是比较简单的,在VC中创建一个MFC对话框工程,注意工程要使用Unicode库:

工程创建之后,需要将默认对话框资源中的几个按钮和文字都删除,变成一个干净的对话框资源:

2、设置DuiVision的头文件和lib文件目录

将DuiVision的头文件和lib文件放在某个位置,并在工程的头文件和lib文件路径定义部分添加相应的目录。

然后在stdafx.h文件中添加如下几行对DuiVision的头文件和lib文件的引用。

#include "DuiVision.h"

Lib库采用在工程设置中添加引用库文件的方式,针对VC2008的DuiVision库文件分别是DuiVision.2008d.lib和DuiVision.2008.lib。

添加lib引用之后应该就可以编译代码了。

3、DuiVision库的初始化以及主窗口的定义

在主程序的App类InitInstance()函数中添加DuiVision库的引用代码,示例代码如下:

    // 初始化DuiVision界面库,可以指定语言,dwLangID为表示自动判断当前语言
    // 1116是Demo程序的应用程序ID,每个DUI应用程序应该使用不同的ID
    // ID主要用于进程间通信传递命令行时候区分应用
    // IDD_DUIVISIONDEMO_DIALOG是工程中创建的那个对话框资源ID,所有窗口都是共用此ID的
    // 第三个参数可以指定资源文件名,如果不指定默认使用xml\resource.xml的定义进行资源的加载,资源文件名的定义方式参考下面的说明
    DWORD dwLangID = 0;
    new DuiSystem(m_hInstance, dwLangID, _T("DuiVisionDemo.ui"), 1116, IDD_DUIVISIONDEMO_DIALOG, "");

    // 创建主窗口
    CDlgBase* pMainDlg = DuiSystem::CreateDuiDialog(_T("dlg_main"), NULL, _T(""), TRUE);
    // 给主窗口注册事件处理对象
    CDuiHandlerMain* pHandler = new CDuiHandlerMain();
    pHandler->SetDialog(pMainDlg);
    DuiSystem::RegisterHandler(pMainDlg, pHandler);

    // 初始化提示信息窗口
    DuiSystem::Instance()->CreateNotifyMsgBox(_T("dlg_notifymsg"));

    // 按照非模式对话框创建主窗口,可以设置为默认隐藏
    pMainDlg->Create(pMainDlg->GetIDTemplate(), NULL);
    //pMainDlg->ShowWindow(SW_HIDE);
    INT_PTR nResponse = pMainDlg->RunModalLoop();

    // 如果是按照模式对话框运行主窗口,只要改为如下代码就可以
    //INT_PTR nResponse = pMainDlg->DoModal();

    // 释放DuiVision界面库的资源
    DuiSystem::Release();

如果已经定义了主窗口的XML定义文件,添加上面的代码之后应该就可以创建出主窗口了。这段代码做的事情主要是:

1、DuiVision库的初始化,并指定资源文件的位置(不指定则使用默认的位置)

2、根据dlg_main定义加载主窗口界面

3、创建主窗口的事件处理对象,并注册给主窗口(注册之后主窗口的事件都会自动发送给此事件处理对象的OnDuiMessage处理函数进行处理)

4、显示主窗口,使用非模态方式运行主窗口的消息循环

5、主界面关闭之后进行DuiVision库的释放

注意运行之前要把图片、xml定义都放在对应的位置,默认图片都在skins目录,xml定义文件都在xml目录。

DuiSystem构造函数第三个参数(资源文件名)的说明,资源文件名可以用下面几种格式:

1、不指定(为空),则使用默认的资源文件名xml\resource.xml,表示加载exe路径下的xml\resource.xml文件,根据此文件加载其余的资源;

2、指定xml文件,例如xml\resource.xml,表示加载指定的资源xml文件,根据此xml文件加载其余的资源,如果指定了xml文件路径则使用绝对路径,如果没有指定xml路径,则查找exe路径和exe下面的xml路径看有没有此文件,有的话就加载xml文件;

3、指定后缀是.ui的文件,后缀是.ui的文件表示是zip压缩文件,则首先加载此zip压缩文件到内存中,然后再从zip压缩文件中解压出相对路径是xml\resource.xml的文件进行加载,后续其余文件的加载过程和上面两种情况是相同的,如果zip压缩文件已经加载了,则加载其余文件的时候,会先查找物理路径下有没有文件,有的话就优先加载,物理路径下没有找到文件,则查找内存中的zip压缩文件中有没有文件,有的话就解压到内存并加载,加载内存文件时候会对内存文件进行缓存,下一次再加载相同的文件时候直接用内存缓存,不需要再进行解压缩;

4、指定前缀是res:的文件,表示从程序的资源中首先获取到资源zip压缩文件,后续的流程和.ui方式的zip压缩文件是相同的,这种情况下,参数res:后面跟的是程序中的资源ID,例如res:1116表示从程序资源中获取资源ID是1116的资源进行解压缩。

通过向导创建主程序和插件工程的方法

DuiVision提供了创建工程的VC向导,目前支持VC2008和VC2010,也可以稍微修改之后用于其他的VC版本,向导有两种安装方式,一种是通过向导的安装程序来安装,一种是通过一个javascript脚本来安装,因为向导的安装程序已经不更新了,我们推荐用js脚本方式来安装向导,安装方法如下:

更新github库,找到其中的DuiWizard\SetupWizard.js文件,运行这个javascript脚本就可以进行向导的安装,运行时候会提示是否安装VC2008、VC2010等版本的向导,这种方式安装向导的优点是如果DuiVision版本升级了,只需要更新github库,不需要再次安装向导,生成的工程就自动是最新版本了,因为这种方式生成的工程代码是直接从下载的代码目录下复制的。

向导安装之后,在VC中新建工程,可以看到模板中多了一个DuiVision应用程序模板:

选择此模板就可以创建DuiVision工程,创建工程一共有四个步骤,第一步是设置应用程序标题和版权信息:

第二步是选择创建的工程类型,有两种类型,DuiVision主程序和DuiVision插件:

第三步是设置界面中多个Tab页情况下每个Tab页的标题和事件处理类名字,如果不设置任何Tab页,也会自动创建一个默认Tab页:

第四步是工程的一些选项设置,如果是新建的一个解决方案工程,则默认会将DuiVision库的代码和资源文件拷贝到新建的解决方案目录下,如果是在现有解决方案中新建一个工程,则默认不拷贝,你也可以修改这个选项:

生成的工程中包含DuiVision库、生成的工程代码、bin目录和bin目录下的资源文件,针对创建的每个Tab页,都会在bin目录下的xml目录下生成对应的Tab页xml文件框架,DuiVision应用程序的xml文件在xml\app目录下,DuiVision从插件程序的xml文件在xml\plugin目录下。

向导中包含的DuiVision库可能不是最新的库,可以在工程生成之后,将工程目录下的DuiVision目录和bin目录下的一些基础资源文件替换为最新的文件。

时间: 2024-11-07 08:49:08

DuiVision开发教程(1)-创建DuiVision工程的相关文章

DuiVision开发教程(2)-如何写一个简单的界面程序

基于DuiVision界面库开发的界面程序主要包括如下几部分内容: 1.资源定义,包括图片资源.各个窗口界面的xml定义文件 2.事件处理类代码,用于处理界面响应消息 3.其他业务逻辑代码 下面举例说明如何写一个简单的界面程序. 第一步:使用VC向导创建一个有两个tab页面的DuiVision工程 向导生成的解决方案文件如下: 默认有两个工程,分别是DuiVision库和应用程序工程.自动生成的代码目录中bin目录下的内容那个如下,bkimg目录存放窗口背景图片,skins目录存放图片资源,xm

iOS 9应用开发教程之创建iOS 9项目与模拟器介绍

iOS 9应用开发教程之创建iOS 9项目与模拟器介绍 编写第一个iOS 9应用 本节将以一个iOS 9应用程序为例,为开发者讲解如何使用Xcode 7.0去创建项目,以及iOS模拟器的一些功能.编辑界面等内容. 创建iOS 9项目 一个iOS应用的所有文件都在一个Xcode项目下.项目可以帮助用户管理代码文件和资源文件.以下是使用Xcode创建项目的具体操作步骤 (1)打开Xcode,弹出Welcome to Xcode对话框,如图1.4所示. 图1.4  Welcome to Xcode对话

DuiVision开发教程(5)-事件处理类编写

使用DuiVision开发的界面程序中,除了界面的描述之外,最主要的工作就是业务逻辑的处理,为了将业务逻辑和界面展示能够更好的分离,DuiVision中定义了事件处理基类,所有的业务逻辑都应该写在派生的事件处理类中,并把事件处理对象注册到相应的对话框或控件上,这样对应的子控件有事件需要处理的时候,就会自动调用注册的事件处理对象的相应函数.事件处理类只要在处理函数中根据控件的ID或名字决定该做什么事情,写相应的处理代码就可以.事件处理类中同时提供了一些函数方便根据ID或名字获取到对应的控件对象,并

Scala 概述+scala安装教程+IDEA创建scala工程

Scala概述 1.1.什么是Scala Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性.Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序. 1.2.为什么要学Scala 1.优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验. 2.速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快:Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多. 能

DuiVision开发教程(9)-动态创建控件

基于DuiVision的界面程序大部分情况下都是通过xml事先定义好界面的,但有时候需要通过代码来动态创建控件,可以参考下面的动态创建控件的例子: CDuiButton* pToolBtn = static_cast<CDuiButton*>(DuiSystem::CreateControlByName(L"button", m_pDlg->GetSafeHwnd(), m_pDuiObject)); if(pToolBtn) { ((CControlBase*)m_

DuiVision开发教程(11)-托盘图标和托盘菜单

DuiVision界面库封装了Windows托盘图标的相关操作,可以创建托盘图标,并设置图标文件.托盘的tip信息,也可以处理托盘的单击.双击.右键菜单的事件. 通过调用下面的函数可以进行托盘的初始化: DuiSystem::Instance()->InitTray(); 初始化一般放在主的事件处理类OnInit函数中,可以参考demo程序的代码.设置托盘的图标文件盒tip信息可以调用DuiSystem的SetTrayIcon.SetTrayTip函数. 托盘的右键操作是打开右键菜单,右键菜单在

DuiVision开发教程(3)-XML资源文件定义介绍

全局资源定义-resource.xml 基于DuiVision界面库的程序,需要有一个默认的资源定义XML文件,此文件默认的位置是exe文件所在路径下的xml\resource.xml文件,如果使用了zip压缩文件来保存所有资源文件,则此文件的位置是在压缩包中的xml\resource.xml文件.此文件中可以定义程序的全局配置.XML文件.字体.图片.文字等资源,示例如下: <?xml version="1.0" encoding="utf-8"?>

DuiVision开发教程(4)-使用zip资源

从ZIP压缩文件中加载资源 DuiVision支持将所有的图片和XML资源文件放在一个zip格式的压缩文件中,如果使用zip格式的资源文件,需要在主程序代码中初始化部分指定使用的压缩文件的文件名. 如果使用zip资源文件,则resource.xml文件的位置默认是放在zip文件中的xml子目录下.建议zip文件按照xml.skins这样的子目录来压缩,见下面的压缩文件示例: 有zip资源文件的情况下,资源文件的加载并不一定是加载的zip文件中的内容,加载的优先级如下: 1)如果只有zip压缩文件

DuiVision开发教程(18)-弹出窗

DuiVision的弹出窗口类CDlgPopup,是菜单.下拉列表等控件的父类,也可以单独使用,用于创建弹出窗口,弹出窗口默认是非激活状态下自动关闭,例如鼠标点击到弹出窗口外面的区域,弹出窗口就会自动关闭,也可以设置为不自动关闭. 通用的弹出窗口一般通过对话框的OpenDlgPopup函数创建. 弹出窗的属性说明如下: 属性名 类型 说明 width 数字 窗口宽度 height 数字 窗口高度 bkimg 字符串 窗口的背景图片,如果指定了就使用指定的背景图片,否则使用全局设置的背景图片 bk