duilib 入门一之界面库基本原理
来源:互联网 发布:php怎么调用接口 编辑:程序博客网 时间:2024/05/21 00:47
关于UI控件的控制事件和响应,无论在PC还是在手机或者其他设备,处理方式基本是一样的。
如何理解呢?你可以试着想一下,假如有这个一个需求,
1、你只能得到显示器的分辨率,比如1024*1280,以及鼠标点击坐标,以及移动的坐标;
2、设备只提供几个画图的函数,你可以画几个框框,并进行背景设置等等;
3、你需要在这个设备上面开发一个窗口,窗口上面有一个按钮;
4、程序运行后,设备会提供一个函数,调用这个函数,你会得到当前窗口在屏幕中的位置,假设为函数名为 GetCurProcecssWindowPos();
5、点击下这个按钮,设备会做点什么,这由其他人完成;
然后到此结束
当你接到这个案子,你会怎么做?试着思考一下。
如果你见过windows窗体,你可能会按照下面的步骤进行
1、程序运行后,先使用画图函数画一个窗体,窗体上面有标题栏,关闭按钮,以及需求中的提到的按钮,并记下窗体上面各个按钮的相对位置
2、记下窗体中各个按钮的相对位置(这是因为主窗口的位置随时变,记下绝对位置没用)
3、主窗体固定后,调用GetCurProcecssWindowPos函数获得窗体在屏幕中的位置
4、定时去获取鼠标的点击位置
5、获取鼠标位置了,通过计算,并对比是否鼠标点击的位置是否在我们需要的按钮上面,如果是,则调用鼠标响应的函数。
抛开操作系统,我们是不是可以按照上面的方式设计一个窗体程序?答案是肯定的。
回到windows上面,windows操作系统提供的大量的函数和系统事件,我们可以按照上面的逻辑设计一套窗体系统,为了达到更好的结构,我们或许会想着把逻辑和界面的部分分离开来。
首先,我们需要一个文件来描述控件的布局,控件使用的图片,控件的特征,控件的标示等等,假定该文件为UI.xml,描述如下面所示,
<HorizontalLayout width="97" align="left">
<Button name="checkRemKey" width="17" height="17" normalimage="image\CheckBoxNormal.png" hotimage="image\CheckBoxHot.png" pushedimage="image\CheckHot.png" />
</HorizontalLayout>
然后我们会去设计一个线程,专门用来解析UI.xml,并进行相应的绘制,我们还可能设计一个线程专门用来监控windows的各种事件(设备的输入输出,系统消息),该线程实现可能会是这样
switch(GetMsg())
case WM_LBUTTONDOWN:
XXX;
break;
case WM_TIMER:
XXX;
于是,一个逻辑和界面分开的程序就被设计出来了,
以上就是各种界面库的原理
转自:http://blog.csdn.net/lishi969635/article/details/49969913
- duilib 入门一之界面库基本原理
- duilib 入门一之界面库基本原理
- Duilib界面库入门笔记(一)
- duilib教程之duilib入门简明教程 -- 界面布局(9)
- C++界面库 《duilib入门到精通》- duilib概述
- 初识Duilib界面库
- duilib教程之duilib入门简明教程
- duilib 入门三之UIManager
- duilib 入门四之UIBase
- duilib 入门五之UIManger
- 开源界面库Duilib
- Duilib界面库学习笔记
- duilib 界面库资料收集
- Duilib界面库使用简介
- 【duilib界面库】duilib界面库(1)初识duilib界面库及编译配置详解
- C++ 轻量级界面库DuiLib库简介(一)—XML基础配置
- 【Tensorflow】TensorFlow 入门之基本原理
- 2013 duilib入门简明教程 -- XML配置界面(6)
- Eclipse转IDEA及快捷键、常用优化设置
- Vue computed计算属性的妙用
- 自定义DrawableTextView——实现TextView左上右下的点击监听
- echarts 柱状图 ,颜色和显示设置
- JAVA简介、方法、面向对象笔记2
- duilib 入门一之界面库基本原理
- Check the difficulty of problems POJ
- redisCacheManager(redis缓存管理器使用)
- duilib 入门二之 HorizontalLayout与VerticalLayout
- 一个人的企业安全建设之路
- Web前端——bootstrap源码定制之环境搭建
- JavaScript获取表单的方法
- Echarts去掉柱状图后的分割线和格式化y轴的数值
- 数据结构及算法学习(一)