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

haiyicha haiyicha
445
2022-05-11
windows编程,对初学者有点难度。windows多彩多姿的应用程序,吸引着广大的编程爱好者,我就是其中之一,从win98开始,就用其为平台,开发windows应用程序,现在已有二十余载了。 一般初学者理解的windows编程,就是做一个应用程序。有点经验的,会把wi...

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,这两样都比较重要,在找工作方面,也会是一大臂助。

如果你对技术也有追求,对现实迷茫,请关注我,@暗黑程序员

其他相关 RELEVANT MATERIAL
如何备份一些特别重要的文件?

如何备份一些特别重要的文件?

haiyicha haiyicha
756
2022-05-11
1、原则上优先本地存储至少一份,比如移动硬盘、优盘上都可以存一份; 2、可以在线上存一个备份,主要两个渠道,一个是百度网盘,另一个是邮箱比如可以给自己发邮件也可以用网易邮箱的网盘功能,上传前记得用winrar进行加密打包; 本地备份涉及次数很多,所以每次进行覆盖存储费时......
在人工智能时代,计算机专业的学生需要学习哪些知识?

在人工智能时代,计算机专业的学生需要学习哪些知识?

haiyicha haiyicha
908
2022-05-11
计算机专业,涵盖了太多内容,讲一下本人吧,学的是软件开发,学习各种编程语言,还需要学习,网页前台页面,和后台管理系统,和平常使用电脑没什么区别,但是使用的编程软件,可能很多人都没有听说过,区别主要是你使用电脑做做的事情有所不同,使用的方法都是用鼠标键盘操作。 希望我的回......
唱歌有什么好处?

唱歌有什么好处?

haiyicha haiyicha
433
2022-05-11
大家好,很高兴回答这个问题,对于唱歌有什么好处,个人认为有以下两点。 1、从医学角度来讲唱歌能利用收腹呼吸法锻炼腹式呼吸,唱歌时基本的呼吸方法是腹式呼吸,腹式呼吸时腹部肌肉能得到充分的利用,所以能加速新陈代谢、紧致腹部肌肉。使用腹式呼吸唱歌能调节空气的吸入和呼出,从而能......
你最常用的三款浏览器是什么?

你最常用的三款浏览器是什么?

haiyicha haiyicha
550
2022-05-11
QQ浏览器 360、UC、谷歌 1.360浏览器 双核智能切换,不管什么网站均可应对自如,享受最快最安全的浏览体验。Smart UI独立引擎让浏览器界面变得更加聪明,能够快速响应你的所有需求。即使不安装任何下载工具,你也能在浏览器里享受飞速、不中断的下载体验。 2.......
电脑上哪个浏览器比较简洁好用,没有杂七杂八的东西?

电脑上哪个浏览器比较简洁好用,没有杂七杂八的东西?

haiyicha haiyicha
885
2022-05-11
电脑上的浏览器使用过的包括以下几款。 Windows自带ie浏览器。这款浏览器现在几乎没有人用了。微软也没有更新,它的界面比较老旧,所以不再推荐。 Windows自带edge浏览器。这款浏览器在windows2020出了新版,主要更新内容是换用的谷歌的内核。现在它和谷歌......
电脑浏览器用什么比较好?

电脑浏览器用什么比较好?

haiyicha haiyicha
572
2022-05-11
我要答一个与众不同的答案,由于工作性质的关系,我对浏览器的要求就是高速的运行速度,目前符合这一要求的就是Chrome内核的浏览器,比如最多人用的Chrome浏览器,而另一个选择就是Firefox即将推出的Quantum浏览器。 在火狐称要推出Firefox Quantu......
评论 SAY SOMETHING
年度爆文