闲聊桌面应用开发[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个,再学习新的内容时都很快。毕竟再怎样发展,其核心的思想部分仍然是一致的。

时间: 2024-10-06 00:53:46

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

【C/C++】STL,ATL,WTL之间的联系和区别

STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R Musser在惠普实验室工作时所开发出来的.现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间.STL的代码从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统

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

第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Windows程序员的事实). 操作系统 API.操作系统发展到今日,几乎桌面应用的所有功能,都是基于系统API构建的.调用API和语言及技术无关,哪怕是使用汇编.例如(代码来源于网络,本地重新编译): ;我的第一个win32汇编程序 ;一个经典的hello world !程序 ;>>>>&

桌面程序开发入门(WinForm with C#)

1.使用Visual Studio 2013创建新项目 2.创建一个主窗体和4个子窗体 3.创建一个数据库.一个表.一个存储过程 4.在配置文件里添加数据库连接字符串 5.真正的编码工作. 第一步:创建新项目,一张图片抵一万字!看图说话,呵呵.. 第二步:创建4个子窗体,名称分别是formCommandProc.cs.formDataAdapterProc.cs.formXMLCreate.cs.formXMLRead.cs. 三.创建一个数据库.一个表.一个存储过程.打开MS SQL Serv

[ATL/WTL]_[中级]_[保存CBitmap到文件-保存屏幕内容到文件]

场景: 1. 在做图片处理时,比方放大后或加特效后须要保存CBitmap(HBITMAP)到文件. 2.截取屏幕内容到文件时. 3.不须要增加第3方库时. 说明: 这段代码部分来自网上.第一次学atl/wtl.gdi不是非常熟悉.以后转换为wtl版本号吧. 当然wtl项目直接用也没问题. 如今想想wxWidgets的wxImage类对这类操作方便多了.仅仅须要调用一个SaveFile方法. 保存HBITMAP到文件: static bool SaveBitmapToFile(CBitmap& b

基于CefGlue的桌面应用开发

原文地址:http://johnnyfee.github.io/csharp/2013/12/21/cef-glue/ 前言 如果你想使用WEB技术来开发桌面客户端,并且是想使用的语言也是C#时,那请耐心往下看.使用WEB技术开发桌面客户端的核心其实就是使用一个能够独立运行WEB前端的组件,如WinForm中的WebBrowser,Android平台的WebView,以及Qt提供的WebView,等等.对于桌面客户端开发而言,使用WebBrowser空间依赖于客户端安装的IE浏览器版本,而且IE

[ATL/WTL]_[保存CBitmap到文件-保存屏幕内容到文件]

场景: 1. 在做图片处理时,比如放大后或加特效后需要保存CBitmap(HBITMAP)到文件. 2.截取屏幕内容到文件时. 3.不需要加入第3方库时. 说明: 这段代码部分来自网上,第一次学atl/wtl,gdi不是很熟悉,以后转换为wtl版本吧.当然wtl项目直接用也没问题. 现在想想wxWidgets的wxImage类对这类操作方便多了.只需要调用一个SaveFile方法. 保存HBITMAP到文件: static bool SaveBitmapToFile(CBitmap& bitma

[ATL/WTL]_[中级]_[原生的复选框(checkbox button)和单选按钮(radio button)实现透明背景效果解决方案]

场景: 1. mfc,wtl的原生控件都是通过父窗口拦截 WM_CTLCOLORSTATIC 事件来修改子控件的颜色和背景色,CStatic可以通过返回HOLLOW_BRUSH来绘制透明背景: m_HollowBrush = AtlGetStockBrush(HOLLOW_BRUSH); 但是如果使用manifest文件使用最新 外观样式的话,返回HOLLOW_BRUSH对checkbox和radio button没有任何效果,原背景还是存在.虽然通过自绘一个checkbox和radio but

干货系列2:看看Java桌面应用开发的职业发展空间与必备技能

导读: 我前面两篇文章分别写了java软件开发和java互联网开发工程师的职业发展和技能要素,今天说一说Java桌面应用开发的程序员,他们一般来说对未来发展尤为困惑,确实,用Java可以创建出桌面应用,但只要我们想开发真正的富桌面应用,还需要使用JNI.C/C++等等技能.所有,也许了解如何系统的建立自己的知识体系,是你困惑的的根本原因. 所以,如果你正在(或未来)做Java桌面应用开发,并且对你未来的职业道路感到迷茫和不知所措.跟我来,我将就java桌面应用的发展路线和所需要的技能一一说明,或

创建有个性的对话框之ATL/WTL篇

前记    这几个嵌入类其实很早之间就完成了,2003年的时候我在CodeProject上发布了这些代码,不过当时使用了紫色作为按钮的边框,导致几个无聊的LY在哪里争吵关于Gays的问题,呵呵,看来不仅语言要接轨,颜色的认识也要和西方接轨哟.现在刚好趁这个机会整理一下代码,写篇文章纪念之. 本文的目的是使用ATL/WTL做一个与“创建有个性的对话框之MFC篇”的个性对话框一样的对话框.ATL/WTL一套模板库,创建ATL/WTL应用程序不可避免的要用到C++的模板与多继承方面的知识,在看本文之前