专栏首页程序员互动联盟【答疑解惑第十二讲】windows编程学习框架图

【答疑解惑第十二讲】windows编程学习框架图

存在问题:

桌面系统windows为王,windows编程大有可为。

解决方案:

大家知道现在PC市场上,Windows、Linux、Mac基本占了百分之九十多,而在个人用户PC市场,Windows应用在目前的PC市场还是占据了绝大多数,根据StatCounter和Net Applications两家机构的最新统计,Windows系统仍然占据90%以上,因此在Windows上或者在Windows环境下开发应用程序还是非常普遍的。及时是Linux下开发软件的同时,也有不少人是在Windows环境下开发,所用工具也很多都是Windows平台的软件。

另外,很多朋友学了C语言,发现编写的都是黑洞洞的命令行程序,现在的电脑里,窗口程序已经成为“高大上”的一个标准之一了,只有一些系统服务,系统命令工具还保持控制台风格,那要编写Windows下的窗口程序在怎么学习呢?

从广义上说只要运行在Windows下的窗口程序都可以作为目标,但是微软还是搞了好几种编程语言都可以编写Windows窗口程序,比如C/C++、C#、VB;甚至还是非微软系列的,比如C++ builder等等,但是不管这些表面怎么不同,始终是长在Windows这个平台上,那么Win32相关API始终都是最后的那个调用。因此在Windows下要学习窗口程序编写,一定离不开Windows API的使用,由于C#、VB已经把窗口程序作为其必备的部分,也就不再考虑这个问题,我们今天的目标就是带领广大初学者如何用C/C++来学习编写Windows下的窗口程序,已经熟悉的或者高手们直接略过。

考虑到本篇文章是为初学者或者有一定C语言基础的朋友准备的,所以我按照学习的步骤来讲怎么编写Windows程序,有会的部分可以跳过进入下一部分。

一,安装窗口编译环境 要开始Windows编程,我们需要安装一个开发环境,我推荐你在VS下编写窗口程序,版本不是最重要的,不管是VS2013、VS2010、VS2008、哪怕是VS2005,甚至是VC都不是关键,也不是越新越好,最好跟你的Windows系统版本匹配。这里我们不讨论具体某个最新特性,而是常规的窗口程序编写,因为一些特性是对版本有要求的。比如我现在用的是VS2008,这个版本虽然不新,但是他的大小差不多,包括MSDN一起安装下来4G左右,关键的是这个版本还可以开发很多市面上支持的WinCE开发板嵌入式程序。

二,安装帮助文档MSDN 虽然这个不是必须,但为了后面的编程方便,我强烈建议你安装MSDN,这个基本成了编写Windows程序编写的标配了,有了这个东西,那些API函数的用法,很多实例代码和说明上面都能找到。它不只是有编写Win32的指导,好包括MFC、C#、VB、COM、DirectX等Windows下各种编程的说明文档,所以只要你是在Windows环境下开发,都有很多值得参考的编程技术指导。

三,C/C++语言编程 要用C/C++语言开发Windows的程序,C/C++语言是基础。学习C/C++语言的学习资料和方法网上到处都有,教程也是多如牛毛,各有各的理解和喜好,至于什么书好,自己去查,我也不想在这里被拍砖,但至少C/C++语言常用语法和知识点都应该知道,能用C语言编写一些基本程序,知道如何调用第三方的API。要准备开发Windows程序,我建议学习C/C++语言就在上面安装的VS环境下进行。虽然学习C/C++语言有其他一些开发环境可以选择,比如code block、eclipse等等,要单学习C/C++语言是没有问题的,但是计划要在Windows下开发,还是VS比较主流。有了一些基础也可以边学Windows相关知识,一边锻炼C/C++语言。当有了这些基本知识,我们就可以进入下一步的Windows开发学习了。

四,了解Windows编程 这里不涉及C#和VB这种其他语言的Windows下的应用,而是特指C/C++编写。编写Windows程序一般有两种,一种是MFC;一种是Win32编程,一般这种就是通常所说的Windows编程,它跟Windows下编程不是一个概念。MFC全称是微软基础类库(Microsoft Foundation Classes),它是微软公司将Windows的那些常用的API函数封装成了相关的类,比如典型的窗口类就封装了窗口的管理的各种方法和熟悉,各种控件都有窗口类派生出来。MFC模式编程基本上都是使用C++,这个要求你有一定的C++基础。Win32编程是Windows最“原始”的编程模式,只要有C语言基础就可以,这种编程模式就是采用C语言+Windows API调用的方式,MFC那些类封装的成员函数,最后也都是调用了Windows的API接口。这种编程方式由于比MFC更直接,编出来的应用程序要小不少,效率相对更高,调试和运行过程更容易理解,尤其是对那些C++学得不太好的同学更容易接受。有些变态功能用MFC相当不好实现,但是用Win32就不存在这些限制,“副作用”就是要求你更了解Windows方面系统API,具体哪种适合您,请自己选择。BTW,国外的大牛们一般都用Win32方式!

五,窗口交互界面 对于不太熟悉Windows窗口编程的菜鸟,也许目前还不了解要学Windows哪些东西呢?鼠标操作?玩游戏?开玩笑了,肯定不是。Windows编程可以分为两部分,第一部分就是Windows下的交互界面编程,对于没有真正理解Windows编程的人来说,这部分可能就是所谓的Windows编程了;另外一部分就是深入理解Windows的运行机制、内存管理和核心对象。下面就是第一部分主要的学习内容:

框架——Windows是一个消息驱动的系统,它包括基本消息循环框架、各种消息产生和处理、传递关系。 窗口——这个部分包括各种窗口的管理,比如创建、销毁、背景、移动、重绘、透明处理等。 控件——这个部分包括Windows窗口上的各种控件的使用和管理。 GDI——这个部分包括用于绘制的各种GDI对象,比如字体、位图、画刷、画笔、区域、路径等。 外设——这个部分包括鼠标、键盘、打印机等、串/并口。

六,Windows编程提高 这一部分要学习的内容就是上面说到的第二部分,它是Windows的精髓,但是也不容易理解,体现了Windows的内部运行机制,作为高级Windows开发必须学习,一个复杂的Windows应用或多或少都会应用到这些部分或全部。下面列出了主要的学习内容: 内核对象——包括进程、线程、调度、同步操作的相关知识。 内存管理——包括Windows系统的虚拟内存管理、地址空间、内存映射等。 动态链接库——包括动态库原理、创建和相关高级应用。 异常处理——包括结构化异常处理、异常链、错误与恢复。

本文分享自微信公众号 - 程序员互动联盟(coder_online)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-11-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【记忆卡片】windows常用的快捷键

    F1 显示当前程序或者windows的帮助内容。 F2 当你选中一个文件的话,这意味着“重命名” F3  当在桌面上的时候是打开“查找:所有文件”...

    程序员互动联盟
  • 【入门必备】常用的C语言编程工具

    中国有句古话叫做“工欲善其事,必先利其器”,可见我们对工具的利用是从祖辈就传下来的,而且也告诉我们在开始做事之前先要把工具准备好。有了好的工具那么我们做起事来也...

    程序员互动联盟
  • 【编程基础】如何了解c语言中的位运算?

    计算机的各种运算最小单位是字节,但是有时候只对某个位(bit)感兴趣,C语言提供了一些列位运算符来完成这个任务。这些操作非常重要,尤其是在嵌入式开发中会常常用到...

    程序员互动联盟
  • 微软安全公告—2016年11月

    微软于北京时间2016年11月8日发布了14个新的安全公告,其中6个为严重等级,8个为重要等级。本次更新主要修复Windows、InternetExplorer...

    嘉为科技
  • 微软安全公告—2016年12月

    微软于北京时间2016年12月13日发布了12个新的安全公告,其中6个为严重等级,6个为重要等级。本次更新主要修复Windows、Internet Explo...

    嘉为科技
  • 微软安全公告—2016年8月

    微软于北京时间2016年8月10日发布了9个新的安全公告,其中5个为严重等级,4个为重要等级。本次更新主要修复Windows、Internet Explorer...

    嘉为科技
  • 把应用置顶显示的小软件Window TopMost控件v1.1

    某些Windows应用程序没有提供使其自身位于最高位置的选项,即使其保持在所有其他窗口之上,而使用Windows Topmost控件则可以将该功能添加到任何窗...

    萌海无涯
  • windows蓝屏漏洞

    首先用第一个 格式化U盘 用win32 选择优盘 然后 ,选择tinyntfs。img镜像 然后你把刷好的U盘 随便查个windows电脑 如果开了...

    ittongluren
  • 如何使用 SSH 远程控制一台 Windows 服务器

    入职微软之后,这边大多数是使用 Windows 进行开发的,比如我的台式机是 Windows 的,还有一部分服务器是 Windows 的,当然 Linux 是也...

    崔庆才
  • 如何阻止微软强制更新你的操作系统

    不管Windows 7和Windows 8.1操作系统用户是否想要保留原来的操作系统,微软已经开始帮助Windows 7和Windows 8.1用户更新到Win...

    FB客服

扫码关注云+社区

领取腾讯云代金券