闲来无聊,正好小组人员讨论到桌面的开发,那把笔者接触的WIndows平台下的几个主要的发展过程聊一聊。

主要从概述,参考资料,图书等几个方面说起。

所有的界面开发都会涉及如下的几个方面的内容:

v 控件 [Contrrols Widget]及验证

v 绑定:数据绑定到控件和控件的内容反馈回数据

v 布局系统:

v 模式和支撑:和服务的通讯,MVC MVP MVVM等模式

史前期->WIN16

这个主要是Windows3.x的时代,这个时代笔者接触的不是很多,当年也主要是使用体验了。当年买了很多的3寸5寸的软盘把系统安装拷贝进去,找机房尝试使用了。

相比于DOS,打开了一个全新的窗口。

石器时代->Wind32

随着Windows 95 9x系列的发布,系统软硬件发生了翻天覆地的变化,此时的代码开发还是相当的原始,WinMain函数和消息循环每每都是手工的构建。当前笔者在最早的Windows CE系统构建工具软件就是完全使用WIN32编写的[当时对软件的大小要求很高],不过通过这个对整个的窗口程序的运行机理还是很清晰的。

开发工具上当时还流行的VC1.52 Borland C++[李维在borland的书有详细介绍]。

参考图书

Win32 API参考手册

Windows 程序设计(Charles petzold)

这些可以说是很经典的资料,至于网络资料,这时还很少。

铜器时代->Atl/Wtl/MFC

这个时期的经典工具VC6,到目前也有很多地方在用。VS开发工具也树立了霸主的地位。

v 控件

n 此时Spy可以看到一个软件的窗口句柄,后来由于这样的方式对资源消耗较大,DirectUI出现改进了控件的处理模式

v 绑定

n DDX UpdateData的使用也算是提供了一定的解决方案

v 布局系统:

n 很多是手动处理,还可以使用一些第三方的封装库

v 模式和支撑:

n 较少

参考图书

深入浅出MFC (侯捷)

深入解析ATL

网站

Codeguru.com

Codeproject.com

Vckbase.com

这些是比较常用的网站

铁器时代->WinForm

v 控件

n 沿袭MFC的形式进行了扩充

v 绑定

n 有改善

v 布局系统:

n 有较大改进

v 模式和支撑:

n MVP等Pattern and Practices开始在MSDN出现

WinForm算是比较短命的一个解决方案,后续被WPF/Sliverlight这类取代

参考图书

CLR Via C#

现代->WPF/Sliverlight/WinRT

这个作为微软.net战略的重点,和WCF WF WPF这三架马车,起到了一个重要的一环。

WPF这个界面框架针对以前的界面核心有显著的变化。

这个过程中出现的JavaFX没有造成冲击,随着sun的被收购归于沉寂。

v 控件:

n 很完善,而且可以方便定制

v 绑定:

n 双向绑定的优秀支持

v 布局系统:

n 相比以前很全面,有大幅度的提升

v 模式和支撑:

n MVP MVVM等大量实现

参考图书

WPF揭秘

WPF核心技术

WPF专业编程指南

Silverlight揭秘

网站

Codeplex.com 微软现在官方的开源站点,很多的开源代码都在这发布,如Pattern and Practices, Ado.net Entity等

由上可见整个桌面应用的开发历史发展随着软件硬件的发展而显著的发生着变化,很多人会说,每个都跟踪岂不是很累,其实,这些内容主要精通1个,再学习新的内容时都很快。毕竟再怎样发展,其核心的思想部分仍然是一致的。

闲聊桌面应用开发[Win16->Win32->ATL/WTL/MFC->WinForm->WPF/Silverlight/WinRT]的更多相关文章

  1. nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞

    第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...

  2. ATL封装IE内核启示:使用Win32/ATL建立窗口

    开发大型GUI界面程序MFC当仁不让,但如果是开发图形应用程序,并不需要大规模界面控件,没有必要链接庞大的MFC库,直接使用platform sdk会很麻烦,这时ATL中的关于Windows的封装就是 ...

  3. ATL、MFC、WTL CString 的今生前世(转载)

    转载:https://www.cnblogs.com/tekkaman/archive/2011/04/20/2022650.html 上文分析了ATL.MFC CString的设计和实现,我们不禁会 ...

  4. Win32++:可替代MFC的Windows桌面应用开发框架

    写在前面 有过Win32编程经验的朋友都知道,使用Windows提供的API开发桌面应用是相当繁琐的,创建一个功能简单能接收并处理消息的窗口至少也得几百行代码.创建一个可视化的窗口一般要以下几个步骤: ...

  5. 使用Win32/ATL建立窗口的过程

    有时候想写个几十kb的小程序,MFC实在是太大了,Win32有时又太麻烦,怎么办呢?用ATL写会更方便和轻量级一些 ATL和MFC不同的是,ATL并没有强制性封装WinMain函数,仅封装了WndPr ...

  6. 基于CefGlue的桌面应用开发

    原文地址:http://johnnyfee.github.io/csharp/2013/12/21/cef-glue/ 前言 如果你想使用WEB技术来开发桌面客户端,并且是想使用的语言也是C#时,那请 ...

  7. Web桌面应用框架3:Web桌面应用开发的N种Style

    研究Web桌面应用开发有一段时间了,总结了Web桌面应用开发的一些主流方式. 一.前端Style 这种方式的就是直接实现一个Web程序,再封装一个浏览器展示,相当粗暴和有效.著名的框架就是Electr ...

  8. Mac 桌面软件开发基础问答

    1> Mac OS X平台下的桌面软件是由什么编程语言处理 答: 由Objective-C, swift编程语言处理 2> Mac OS X平台下的桌面软件是由什么框架构建 答: 由Coc ...

  9. 中文代码示例之NW.js桌面应用开发初体验

    先看到了NW.js(应该是前身node-webkit的缩写? 觉得该起个更讲究的名字, 如果是NorthWest之意的话, logo(见下)里的指南针好像也没指着西北啊)和Electron的比较文章: ...

随机推荐

  1. PHP面向对象中的重要知识点(一)

    1. __construct: 内置构造函数,在对象被创建时自动调用.见如下代码: <?php class ConstructTest { private $arg1; private $arg ...

  2. solr:快速开始

    本文已挪至  http://www.zhoujingen.cn/blog/8535.html 明年工作主要和搜索有关,在自己学习过程中分享让更多人受益是我一贯的做法,所以我会把对Solr的学习在这里与 ...

  3. java线程(2)--同步和锁

    参考转载:http://rainyear.iteye.com/blog/1734311 http://turandot.iteye.com/blog/1704027 http://www.cnblog ...

  4. 多个ajax请求下等待条显示和隐藏的简单处理

    处理为遇到ajax请求就显示等待条,直到所有的ajax请求执行完毕才关闭等待条.比较简单,源码如下(基于jQuery) //基于jQuery //从第一个ajax请求发出开始显示等待条?直到一系列aj ...

  5. 记一个同时支持模糊匹配和静态推导的Atom语法补全插件的开发过程: 序

    简介 过去的一周,都睡的很晚,终于做出了Atom上的APICloud语法提示与补全插件:apicloud_autocomplete.个中滋味,感觉还是有必要记录下来的.代码基于 GPL-3.0 开源, ...

  6. C语言学习019:函数指针

    在C语言中,函数名也是指针变量,比如创建了一个add(int n,int m)的函数的同时也创建了一个名为add的指针变量,因此我们可以把函数指针当作一种类型为它赋值.当作参数传递等操作 C语言创建函 ...

  7. 关于在Servelet中如何获取当前时间的操作

    //获取到当前时间 Date date=new Date(); DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss&quo ...

  8. Note: This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.

    在Eclipse中开发Android项目时,鼠标停放在想要查看帮助文档的类上面,发现没有显示帮助文档,显示了下面一句话: Note: This element neither has attached ...

  9. Oracle 数据库基础学习 (六) 子查询

    子查询在一个select中出现多个嵌套查询语句 1.在where子句中使用子查询(一般返回"单行单列" "单行多列" "多行单列"(可以提供 ...

  10. SDL教程第一和第二个视频的笔记

    观看正月点灯笼的SDL教程,地址http://www.tudou.com/listplay/9eG9tkk91oQ.html #include <stdio.h> #include < ...