现在的位置: 首页 > 综合 > 正文

MFC控件里的秘密

2013年04月26日 ⁄ 综合 ⁄ 共 740字 ⁄ 字号 评论关闭

  我遇到过一些这样的人,他们提到MFC总是简简单单的提到UI框架。不管非ms 或者非windows阵营说MFC有多烂我始终觉得它很强大,很伟大,让人不得不顶。

  MFC的那些个经典控件,不仅仅是一个界面,更是一种设计模式,从内存处理到数据逻辑到UI逻辑都设计的很完美,不仅最早的体现了UI与数据逻辑分离,可扩展性也很强。

比如CListCtrl,单从条目罗列上来看是二维表,但其实是一个线性节点链,可以随意的插入删除,可以为节点设置附加数据。

比如CTreeCtrl,树状结构的东西大多使用的是组合模式,不仅仅是树控件,整个窗体都是,大窗口嵌套小窗口,层层嵌套,某个窗口中的控件则是具有稍微复杂数据逻辑的特殊的子窗口而已。而且所有的节点都可以设置附加数据。

比如CTabTtrl,多页面多视图之间的切换,代表着软件当前激活的不同状态

咱也不是闲出屁来了一个一个去拿MFC的控件对比啥设计模式,本身到底这两个哪个比哪个出来的早还不缺定呢。只是觉得应该从优秀的东西里边汲取点什么出来添补下。

1.MFC多节点型控件大都有一个特点,有附加数据。附加数据这种做法在数据处理中很有用,比如在设计数据存储的时候,链式或者树状结构存储索引,可以在附加数据中放入下级索引位置或者实际数据的存储位置,比如在设计链式处理(职责链等),比如消息处理链,想在处理出现异常或者错误的时候通知下一级处理或者整个处理链某些消息的时候,可以将处理链的控制体作为附加数据沿着处理链传递,消息处理可以在任何一个节点停止处理链或者将处理从当前节点定位到任何一个节点(异常处理节点)等。

2.如果你想设计一个UI框架,毕竟我们的显示器是个单一的平面结构,所以我们只能虚拟UI的Z轴关系,依靠欺骗人眼视觉实现立体效果。

困了,下次再续好了。

抱歉!评论已关闭.