摘要: AVLTree的一个C++类简单实现
阅读全文
摘要: 这次我们将要给Widget增加一些状态,并使其能够接受出消息处理扩展,测试工程中实现了一个按钮的消息处理扩展。 当然,这次的内容非常多,包括坐标映射、区域映射,捕获鼠标的控件、活动控件、焦点控件等概念都未提到,但在代码中还是能够看到这些概念的。如果一一介绍,那文章就会非常冗长,也会使Widget实现进展缓慢,因此我通常都会省略一些内容,这些内容也就只能通过代码阅读来得到了。
阅读全文
摘要: 模拟控件项目已经进行到一定的程度了,我们得给它来个重构,修改部分BUG且让它更合理一些。这次重构我们产生了新的概念,也删除了一些老的概念;有新的类产生,也有老的类消亡;有解耦,也有融合。
阅读全文
摘要: Widget即将具备可扩展性,我们抽象了一个叫做“对象关系”的概念来辅助Widget扩展。我们将Widget的子控件布局作为一个可扩展点,并建立了一个“边缘式布局子控件”用于测试。
阅读全文
摘要: 控件体系基本雏形已经形成,首次能够直观的看到我们控件了。控件树、控件区域、控件绘制,这些就是这次的内容。
阅读全文
摘要: 既然有些实现对于用户来说是透明的,那么我们就将他们隐藏。这里提出了两种方案,我们进行了对比并选择了其中一种方案来执行,隐藏一些类之后我们便可以简化之前的生命周期依赖了——即通过暴露在外的对象来管理被隐藏的实现对象,这样减少了对象之间的交叉管理。
阅读全文
摘要: 我们最终要实现的是Widget,驱动、过滤器等等都是它的必要实现,但这和用户毫无关系。窗口、驱动、根控件之间有着一一对应的关系,那么他们的生命周期也是相互依赖的,看这里如何管理他们的生命周期。
阅读全文
摘要: thunk已经准备就绪,我们可以开始实现控件驱动了。驱动的职责很简单,负责关联容器窗口并将消息交由过滤器处理。在测试工程代码中,我们可以在调试的输出视图中看到容器窗口消息流入消息过滤器的情况。
阅读全文
摘要: 抽象控件需要由消息来驱动,那么我们就必须要截获其容器窗口的消息。这次的内容就是通过thunk来子类化容器窗口以截获其消息。
阅读全文
摘要: 整个系列是通过一步一步的分析和设计,最终实现一套windows窗口中抽象模拟控件的内核。对抽象模拟控件和概述及其消息驱动的设计便是这次的内容。
阅读全文