有一定基础的C++ 学习者该如何学习Windows编程?

windows编程,对初学者有点难度。windows多彩多姿的应用程序,吸引着广大的编程爱好者,我就是其中之一,从win98开始,就用其为平台,开发windows应用程序,现在已有二十余载了。
一般初学者理解的windows编程,就是做一个应用程序。有点经验的,会把windows的API函数与VS,QT的IDE区分开,也就是说,在用IDE做应用程序时,使用windows API函数,实现windows的功能,直接有效。
API函数及消息驱动,是windows编程的灵魂。
在windows刚上市时,大家都是用API函数及消息驱动来进行windows编程的。
程序开始,就是一个for(;;)循环,用于接收及处理windows的键盘按键消息、鼠标按键消息等等。
API应用程序接口是理解windows的基础,其函数非常多,包括:
1,消息驱动函数。最常用的,就是向某个对话框发送消息之PostMessage()函数,从那来,到那去,还带两个参数信息。PostThreadMessage()也经常用,应用程序间传递。
2、进程、线程创建函数。
做大型程序必须用。有关Process,Thread函数。这一块是初学者理解的难点。
进程、线程,是一个应用程序的主框架。在做程序前,必须先搞明,要使用几个线程,他们之间的消息Message联系;打开几个进程,进程之间的数据交换。
3,文件、图形、文本、网络、定时器、地址映射等。
做windows应用程序,就是要使用其现成的资源,来实现编程。windows保护的东西比较多,不象车DOS下,可随意操作。
比如,在windows下,通过RAM地址与下位机连接进行通讯,那么,这个地址就不是可随便选取的,DOS下0xD0000中的一段,可使用,而在windows下,必须获得权限方可使用。
其它的,如文件、图形、文本、网络、定时器,相对容易,只要把函数原型看清楚即可。
API函数,只解决了windows编程的主要函数问题,要做漂亮的UI及复杂运算,MFC是实现的主要手段。
我们经常看到的Windows应用程序,有各种类型的控件,如,按钮Button,静态文本显示Static,编辑框Edit,多选Check/单选Radio,模板Templete,工具栏Toolbar,进度条Progress,状态栏Status等等,内容非常丰富,应有尽有。
这些都是MFC的资源文件RC及MFC丰富的类的功劳。使用MFC,很容易针对RC中的控件对象进行编程,省去了DOS下的键盘、光标、鼠标、画资源框等零碎的操作,这就是面向对象的好处。
MFC好掌握吗?有难度。但它很有挑战!MFC囊括了我们编程中要用的所有类。即使现在下家热衷使用的android系统,在高版本的VS中,也可进行开发。
所以,学习VS将会使你终生受益。
总结:掌握了以上两点,windows编程就基本入门了。我本人有二十余年的windows编程经验,基本用到了windows的主要功能。界面、网络、数据库连接、各种通讯、轨迹计算、语法解释等等,基本都做过。windows编程很辛苦,也会遇到很多bug,这主要是由于VS IDE及windows操作系统的不断升级的结果,但最后总能找到解决方法。
能够与MS大师同步,不亦乐乎?!
(部分图片来源于网络,仅为示意图)
有了面向对象的编程方法后,学习其他编程语言就跟容易上手。
Windows编程,主要是学会使用Windows的Api,即Win32的Api。
背景介绍
在1995年左右,微软操作系统开始普及千万家,视窗编程变得流行起来,微软开发了一系列对外的windows的win32Api接口,如果你想在windows系统上开发软件,必须通过调用win32的api来完成。
win32的Api包括kernel.dll,user.dll和gdi.dll这几个基本的动态库,还有一些网络和shell的动态库等等。
为了简化win32的Api的调用,微软推出了C++面向对象方式编写的一个界面库MFC,在早期的windows界面编程方面是非常受欢迎的。
后来陆续推出了wxWidgets,DirectUI,以及大名鼎鼎的商业化的界面库Qt。
入门指南
如果你已经有了C++的基础,推荐你学一下Qt,直接跳过MFC,wxWidgets这种比较古老的难学的UI库。
虽然说Qt是商业化收费的,但是在某些地方是半开源的,不会有什么影响。
Qt的编程更适合一般人的思维方式,Api设计的更优雅,容易学习。
Qt的文档比较齐全,更新比较及时,方便学习。
Qt的特效qml设计的也非常好,这个在现代编程方面也是非常流行的。
学习建议
虽然一个好的界面库,可以省去你很多的学习时间,但是如果想在windows编程上有所发展的话,还是建议你从win32编程入手,更多的去了解windows的原始的Api。
或者尝试一下Duilib这个DirectUI三方开源的界面库,设计理念也是非常好的,界面都是通过xml配置好以后绘制出来的。
案例分享
我本人学过界面编程一段时间,起初学的是MFC,直接上手还是很难的,虽然也学会了。
后来,学了Duilib这个directUI库,也比较简单。
最终的选择是Qt这个商业库,非常全面的功能,架构非常成熟。
目前使用Qt编写的软件有,RedisManagerTool,WPS,KuGou,网易云音乐等等。
总结
推荐你学一下win32的底层Api,再学一下Qt,这两样都比较重要,在找工作方面,也会是一大臂助。
如果你对技术也有追求,对现实迷茫,请关注我,@暗黑程序员