闲聊桌面应用开发[Win16->Win32->ATL/WTL/MFC->WinForm->WPF/Silverlight/WinRT]
闲来无聊,正好小组人员讨论到桌面的开发,那把笔者接触的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]的更多相关文章
- nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞
第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...
- ATL封装IE内核启示:使用Win32/ATL建立窗口
开发大型GUI界面程序MFC当仁不让,但如果是开发图形应用程序,并不需要大规模界面控件,没有必要链接庞大的MFC库,直接使用platform sdk会很麻烦,这时ATL中的关于Windows的封装就是 ...
- ATL、MFC、WTL CString 的今生前世(转载)
转载:https://www.cnblogs.com/tekkaman/archive/2011/04/20/2022650.html 上文分析了ATL.MFC CString的设计和实现,我们不禁会 ...
- Win32++:可替代MFC的Windows桌面应用开发框架
写在前面 有过Win32编程经验的朋友都知道,使用Windows提供的API开发桌面应用是相当繁琐的,创建一个功能简单能接收并处理消息的窗口至少也得几百行代码.创建一个可视化的窗口一般要以下几个步骤: ...
- 使用Win32/ATL建立窗口的过程
有时候想写个几十kb的小程序,MFC实在是太大了,Win32有时又太麻烦,怎么办呢?用ATL写会更方便和轻量级一些 ATL和MFC不同的是,ATL并没有强制性封装WinMain函数,仅封装了WndPr ...
- 基于CefGlue的桌面应用开发
原文地址:http://johnnyfee.github.io/csharp/2013/12/21/cef-glue/ 前言 如果你想使用WEB技术来开发桌面客户端,并且是想使用的语言也是C#时,那请 ...
- Web桌面应用框架3:Web桌面应用开发的N种Style
研究Web桌面应用开发有一段时间了,总结了Web桌面应用开发的一些主流方式. 一.前端Style 这种方式的就是直接实现一个Web程序,再封装一个浏览器展示,相当粗暴和有效.著名的框架就是Electr ...
- Mac 桌面软件开发基础问答
1> Mac OS X平台下的桌面软件是由什么编程语言处理 答: 由Objective-C, swift编程语言处理 2> Mac OS X平台下的桌面软件是由什么框架构建 答: 由Coc ...
- 中文代码示例之NW.js桌面应用开发初体验
先看到了NW.js(应该是前身node-webkit的缩写? 觉得该起个更讲究的名字, 如果是NorthWest之意的话, logo(见下)里的指南针好像也没指着西北啊)和Electron的比较文章: ...
随机推荐
- inuit.css – 基于 Sass 的强大,可扩展的 CSS 框架
inuit.css 是一个强大的,可扩展的 CSS 框架,另外还是基于 Sass,面向对象的框架.inuit.css 是建立在 BEM 风格的命名约定,非常适合于想要专注于创意而不是代码的设计师以及喜 ...
- [git]Git log 输出格式化(转载)
转载于:https://havee.me/linux/2015-05/git-pretty-output.html 美化完的格式: git log --graph --pretty=format:'% ...
- jQuery Ajax实现下拉框无刷新联动
HTML代码: @{ Layout = null; } @using DAL; @using System.Data; @{ AreaDal areaDal = new AreaDal(); stri ...
- c# datetime 格式化
//c datetime 格式化 DateTime dt = DateTime.Now; Label1.Text = dt.ToString();//2005-11-5 13:21:25 Label2 ...
- Bootstrap学习笔记系列3-------Bootstrap简单表单显示
表单布局 垂直或基本表单 基本的表单结构时BootStrap自带的,创建基本表单的步骤如下: 向父<form>元素添加role = "form": 为了获取最佳的间距, ...
- php 获取当前用户的IP
代码如下: <?php if($_SERVER['HTTP_CLIENT_IP']){ $onlineip=$_SERVER['HTTP_CLIENT_IP']; }elseif($_SERVE ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(十)DOSProtection
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- ScrollView与ListView冲突解决
正 常来说,在ScrollView添加一个ListView后在真机上只会显示ListView的一行多一点,我也不理解为什么会这样,后来我把 ListView的layout_height改成400dip ...
- 孙鑫MFC学习笔记12:文件读写
1.指向常量的指针 2.指针常量 3.C语言对文件操作是在缓冲区,在缓冲区满或文件关闭时写入文件 读取相同 4.fflush刷新缓冲区,使缓冲区数据写入文件 5.fseek改变文件指针偏移量 6.st ...
- Android存储空间不足的解决办法
安装应用时,有时会出现错误Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE,这是存储空间不足的错误,这时就只能将应用安装到SD卡,在And ...