就目前我对界面的了解,经典的有2种方案,分别映射到客户端和互联网:一种是windows的界面管理;另一种是html的渲染模型以及交互驱动。前者的优势在于便捷直观的反应了常见的交互视窗;后者的优势在于强大的组合构造任意交互视窗能力。
这两种界面方案后面的支撑都是非常难以实现的,也正是计算机出现给普通用户的基础。由于之前对于ie的源码进行了研究,零零散散抽取的基本实现源码有30m之多,模型之复杂使得在桌面的应用价值并不那么有效立竿见影,于是这次打算从windows的窗口管理系统开始研究,主要是ntos部分的ntuser模块,基于常规的顶层窗口,抽象无窗口的winable视窗,采用模仿windows消息驱动的思路形成一套可视化编程窗口模型。CodeName取xGuiLuna寓意以xp的窗口以及渲染技术为蓝本实现希望能取得成功,尽管现在win7的问世以及所谓的3d渲染界面等,个人觉得这些渲染层面技术的更替要远快于基本交互概念的更替,只是自己在实现的时候尽量带有进步的眼光看问题即可。
1、关注可视化元素的管理、交互(创建 销毁 隐藏 可视 鼠标键盘消息 捕获等)
2、窗口消息的模拟降低其他开发者开发可视化元件的门槛以及学习成本
3、尽量减少win平台的依赖(时钟 线程 绘图设备等)以便后期的平台移植可能
4、rtl国际化支持放弃 由于采取全局绘图dc导致窗口坐标的概念跟windows中有出入但尽量保持一致
目前实现
窗口概念的封装交互支持 部分消息的模拟 滚动条支持 父子窗口剪切
存在问题
rtl的支持对我是一个非常大的考验,考虑到目前状况打算放弃
时间仓促 目前的函数、文件划分并不是非常合理
绘图部分采用的是系统api丑陋点 但个人认为这不是关键
...继续前行