1.获取Duilib库文件 通过上一节大家对DirectUI界面设计有了初步的了解,本节开始我们一起学习Duilib界面库的使用. 首先我们需要获取Duilib库,目前最新版本为2.0,最新版本源码托管在Github上,项目地址: https://github.com/duilib/duilib 笔者选择的版本为1.1版,该版本可以从Google Code上获取: https://code.google.com/p/duilib/downloads/list 由于网络上的限制,笔者在CSDN上上…
上节笔者向大家介绍了Duilib的界面布局并在最后编写了一个仿QQ旋风的界面,但是由于我们屏蔽了系统的标题栏,读者可能已经发现,我们的窗口没办法移动,同样也不能通过拖动来改变窗口的大小. 这就需要我们对WM_NCHITTEST消息进行处理,该消息的LPARAM参数存放鼠标的x坐标和y坐标,在程序中需要对x/y坐标位置进行判断,当坐标落在下图红色线框位置时,我们向窗口过程函数返回HTCAPTION,这样操作系统就会把红色线框区域当成系统的标题栏. 我们可以使用类似的方法告诉Windows操作系统哪…
有过Win32.MFC编程经验的朋友应该都知道,传统Windows应用中的按钮.编辑框等控件都是一个子窗口,操作系统通过窗口句柄来唯一标识该窗口. 使用Windows 标准控件创建用户界面,美化起来是相当困难的,例如我们需要使用一张位图作为按钮的背景,MFC应用需要以下几个步骤: 1.继承CButton类. 2.为按钮添加BS_OWNERDRAW样式. 3.重写DrawItem函数,在该函数中调用绘图API进行按钮的绘制. 要对每一个控件都进行自绘工作量是相当大的,使用DirectUI结合目前市…
本节向大家介绍一下右键弹出菜单是如何实现的.效果如下,在窗口中点击鼠标右键弹出菜单,点击菜单项能够响应菜单点击事件. 使用Duilib库实现的弹出菜单,实际上也是一个Windows窗口,因此我们需要创建两个窗口(主窗口和菜单窗口),然后响应主窗口的鼠标右键点击事件,在主窗口右键点击事件的响应函数中获取鼠标位置,將菜单窗口的位置调整为当前鼠标位置,同时把窗口设置为显示即可. 菜单窗口的xml布局文件内容如下: <?xml version="1.0" encoding="u…
Duilib的界面布局使用xml文件进行描述,在Duilib v1.1版本的xml布局文件中我们可以使用以下这些标签(后续版本标签有扩充): 这些标签总的来讲可以分为三类: 窗口类,该类别中只有一个Window标签,它表示一个Window窗口,是每个xml布局文件的根节点,也是必不可少的元素. 容器类,和该类别相关的标签有ChildLayout.Container.VerticalLayout.HorizontalLayout.TileLayout.TabLayout.该类标签主要用于控制按钮.…
Duilib支持xml界面布局,使得界面设计与逻辑处理相分离,本节介绍如何从xml文件中加载界面元素. 我们需要以下几个步骤: 创建并初始化CPaintManagerUI对象. 创建CDialogBuilder对象,调用CDialogBuilder对象的Create函数加载xml文件,该函数返回界面元素根节点. 调用CPaintManagerUI的AttachDialog將界面元素根节点附加到CPaintManagerUI对象中. 编写xml界面布局文件. 案例代码如下: //代码清单tutor…
上节介绍了使用源码方式构建Duilib应用的项目配置,并创建了一个最简单的基于Duilib库的窗口,细心的读者会发现,当我们点击窗口的关闭按钮时,应用并没有真的退出,因为我们并没有对窗口事件进行处理,本节我们在窗口中绘制一个按钮并响应窗口及按钮的相关事件. 在窗口中绘制一个按钮我们需要以下几个步骤: 创建并初始化CPaintManagerUI对象,CPaintManagerUI类是Duilib库的绘图管理器,用于管理整个窗口的绘制. 创建CButtonUI对象,并调用CPaintManagerU…
上一篇<Windows界面编程第三篇 异形窗体 普通版>和<Windows界面编程第四篇异形窗体 高富帅版>介绍了异形窗口(异形窗体)的创建,并总结出了异形窗口的“三要素”: 1.WS_EX_LAYERED属性 2.指定透明色 3.以位图为窗口背景 本篇文章将主要介绍Windows编程中如何实现静态控件背景的透明化,这将进一步的美化界面.下面先看一张没有做静态控件背景透明化的对话框程序的运行画面,对话框的彩色图片背景可以参考<Windows界面编程第一篇位图背景与位图画刷&g…
1. duilib简介 duilib是一个开源的DirectUI界面库,简洁但是功能强大.而且还是BSD的license,所以即便是在商业上,大家也可以安心使用.现在大家可以从这个网站获取到他们所有的源码:http://code.google.com/p/duilib/ 为了让我们能更简单的了解其机制,我们按照如下顺序一步一步的来对他进行观察: 工具库:用于支撑整个项目的基础 控件库:这是dui最关键的部分之一,相信也是大家最关注的部分之一,另外这里也来看看它是如何管理这些控件的 消息流转:有了…
前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗体工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些特定功能 一个容器能够包涵多个组件,组件必须存放在容器中 3.布局管理器:实现容器的布局设置 4.图形类:包含一些基本图形 Swing是AWT的一个轻量级框架 java.lang.Object   java.awt.Component       java.awt.Container        …