VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 674|回复: 34

《实用VC编程之玩转控件》第1课:Windows编程简介

[复制链接]
51_avatar_middle
online_admins Syc 发表于 2018-11-2 00:12:58 | 显示全部楼层 |阅读模式
0、开发环境:
操作系统:Microsoft Windows 7 Ultimate Sp1 x64
编译工具:Microsoft Visual Studio 2013 Professional 中文版(其实 VS2010、VS2012、VS2013、VS2015、VS2017 都可以的,操作基本相同)

1、简介:
之前VC驿站给大家推出了《实用C++》的新手入门教程,可以说把我们平时针对C++语言经常用到的知识点都做了讲解。不知道大家学习的怎么样?课后有没有真正的去敲代码练习。光看教程是不行的哦~

那么之前啊主要给大家讲解的是C++的基础语言,所以呢主要是在黑窗口的这种命令行控制台下操作的,跟界面没什么关联。但是作为C++新手来说肯定都是对于UI界面比较感兴趣,毕竟我也是从新手阶段过来的。写好了的软件执行起来能看到界面也很有成就感。可以激发大家学习VC++编程的积极性。所以从本节课开始给大家讲解下VC++中的界面开发技术。

2、Windows程序简介:
实际上Windows系统大家应该再熟悉不过了,Windows程序呢也主要分那么几种,例如:exe的可执行程序,dll的动态链接库程序,lib的静态库程序,sys的驱动类型程序等等。这些都可以用VC++来开发。

Exe类的程序从操作界面的使用角度来说又分成两种:
第一种就是我们之前一直使用的黑窗口的控制台下的程序,这种程序一般没有什么界面,都是使用命令行进行操作,比如:ipconfig、ping 之类的。使用系统提供的cmd控制台进行加载。入口点函数是 main。
第二种就是我们接下来要讲解的非控制台类型的程序,这种程序可以有界面,也可以没有界面。想要界面就调用创建窗口的API函数去创建个界面出来,不想要界面呢不创建就可以了。所以呢比较灵活。入口点函数是 WinMain。

3、Windows编程开发相关概念:
Windows API:Windows操作系统应用程序接口(Windows API),有非正式的简称法为WinAPI,是微软对于Windows操作系统中可用的核心应用程序编程接口的称法。它被设计为各种语言的程序调用,也是应用软件与Windows系统最直接的交互方式。大多数驱动程序需要对Windows系统更底层次访问接口,由所用版本的Windows的Native API来提供接口。
Windows有一个软件开发包(SDK, software development kit)提供相应的文档和工具,以使程序员开发使用Windows API的软件和利用Windows技术。

说了这么多,对于新手来说可能还是不太理解,我用通俗一点的话来解释下!
有人会问了我都学完了C++,难道还不能编写Windows系统下的应用程序吗?我还得学其他的东西吗?答案是:能,但是只能编写一些简单的控制台下的黑窗口程序。或者说只能调用C++基本语言内部的函数。

如果你要创建一个窗口,如果你要创建一个按钮,如果你要创建一个菜单,如果你要创建一个进程,如果你要做一个带界面的任务管理器,以上这些单纯使用C++语言能做到吗?答案是:肯定做不到了。
那么如何来做呢,就是要调用windows系统提供给我们的API接口,大家可以把API接口看作是系统提供给我们的工具,使用这些工具就可以做出我们想要的东西来。再举个现实生活中的例子,你学会了C++语言就好比你有了一些简单的工具,C++语言就好比是螺丝刀,扳手,钳子等等,用这些工具你可以做些简单的事情,可如果要让你造出一台汽车,你单纯使用螺丝刀、扳手一类的工具可能造出来吗?答案是:不可能。所以你还需要制造汽车的更高级的东西,比如:车床、工厂、车间等等大型的机械化设备,这些设备是制造汽车的必须品,API就好比这些设备。所以你要在windows系统上开发出更高级的软件,那么就必须调用其系统提供的API接口。这么打比方大家明白了吗?

4、基本的Win32程序:
接下来就教大家如何创建一个Win32类型的Exe程序,具体见视频教程演示。。。
怎么样大家看到了吧,代码量不少,而且操作来说比较复杂,又是初始化,又是注册窗口类,又是窗口函数什么的,一堆东西。更重要的是我们使用这个模版工程继续开发的话会越来越麻烦,比如添加个基本的按钮响应函数,这个还算是简单的了,当对一些比较复杂的控件操作时就更复杂了,比如:ListCtrl 高级列表控件,TreeCtrl 树形控件等等。

另外,当前工程模版默认创建出来的这个窗口不是对话框,所以是没办法进行拖拽控件的,对于小白来说想快速的拖拽控件做出一个窗口看来是有点麻烦了。
实际上Win32类型的工程就是调用基本的系统提供的API函数来写程序的。

5、解决方案:
既然Win32类型的工程这么麻烦,要记的东西也这么多,以后开发起来岂不是很费事儿?这个微软早想到了,其他很多公司也想到了。本身C++就是一门面相对象的,可封装的语言,所以能不能对系统提供的API函数以及复杂的开发流程进行一下封装呢,这样我们以后使用起来就能方便不少?答案是:当然可以了。所以现在市面上有很多封装好的C++库,或者说框架,比如:MFC、QT,这两个算是比较有名的,而且他们两个不仅仅是界面库,还包括很多其他的操作,比如文件管理,字符串操作,网络管理,多线程,数据库操作,注册表操作等等吧,很多方面。

那么他们两个有什么区别,我们该选用哪个呢?其实这个话题从古至今很多人在讨论。个人观点,感觉两个框架都有优缺点,大家根据自己的需要进行选择:

MFC:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个(也是微软产品的唯一一个)应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

优点:MFC说白了就是微软自家的东西,所以VC自带MFC工程向导,VC对MFC支持的也很好。对于界面方面实现起来简单,易于上手,能快速的制作简单的UI界面,执行效率高,生成的EXE或者其他程序可以直接在Windows系统上执行,生成的文件体积也比较小;

缺点:这东西对于新手来说学起来还是有点复杂,因为是对WinApi的封装,里面用到了大量的宏,所以有时候是基于面向过程的,有时候是基于面向对象的,内部也是使用基于Windows系统的消息机制,所以学起来不是那么容易,学习周期长。如果要做成比较美观的界面,类似我们使用的QQ、迅雷、YY等软件的UI界面的话,使用MFC实现起来就比较费时费力,做起来比较麻烦倒不是说做不了,只是比较费劲而已。另外,因为是微软自己的东西,所以不能跨平台,在 Linux、Mac 系统上是别想用了。

总结:所以MFC适合开发对界面美化要求不高软件。

Qt:是一个跨平台的C++应用程序开发框架。广泛用于开发GUI程序,这种情况下又被称为部件工具箱。也可用于开发非GUI程序,比如控制台工具和服务器。Qt使用于OPIE、Skype、VLC media player、Adobe Photoshop Elements、VirtualBox与Mathematica以及被Autodesk、欧洲空间局、梦工厂、Google、HP、KDE、卢卡斯影业、西门子公司、沃尔沃集团, 华特迪士尼动画制作公司、三星集团、飞利浦、Panasonic所使用。

它是Digia公司的产品。Qt使用标准的C++和特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏。通过语言绑定,其他的编程语言也可以使用Qt。
Qt是自由且开放源代码的软件,在GNU宽通用公共许可证(LGPL)条款下发布。所有版本都支持广泛的编译器,包括GCC的C++编译器和Visual Studio。

优点:Qt是一个开源的项目,可以跨平台使用,在 Linux、Mac 系统下一样可以使用。使用完全面向对象的封装机制,内部使用信号与槽机制,易于上手。开发文档丰富,支持VS插件的形式进行开发。可以制作漂亮精美的软件UI界面。省时省力。

缺点:Qt有点过度封装,而且体积也稍大,执行效率没有MFC高,程序分发打包的时候需要将Qt的核心DLL一起随程序打包,不然程序跑步起来。当然也可以用静态库的方式编译,默认只生成一个Exe文件,但这样的话程序的体积会变的很大,不管怎么说Qt生成的文件在分发携带方面的方便性上赶不上Windows的原生程序或者MFC的程序。当然如果是类似YY这种产品级的软件倒也无所谓多带几个DLL了。


总结:所以Qt适合开发对界面美化要求较高的软件。

MFC 和 QT 就好比 手动档车与自动档车一样,前者开发软件太累,但可控性更加高些。

综合以上吧,毕竟我们不是开发什么大型的软件产品,但也为了让大家以后转型方便,所以本套教程界面UI方面使用MFC来开发,除界面外的其他逻辑部分我们全用 原生CPP + SDK API 的方式来做。
这种方式目前来说我想是最好的。同时呢,大家不要着急,以后我们VC驿站会给大家出几套Qt方面的教程,让想学Qt方面的学员也有机会!

从下节课开始,我们就逐一讲解MFC控件工具箱中提供的基础的那15个控件,以及每个控件如何进行美化,如何使用开源类进行更多功能的操作等等,大家好好学习吧~

6、相关控件:
Button                按钮控件
CheckBox        复选框控件
Edit                        编辑框控件
ComboBox        下拉控件
ListBox                列表控件
GroupBox        分组控件
Radio Button        单选框控件
Static Text        静态文本框控件
Picture Control        图像控件
Slider Control        滑块控件
Spin Control        数值调节钮控件
Progress Control        进度条控件
List Control        高级列表控件
Tree Control        树形控件
Tab Control        标签控件

7、本套课程力求:
如何通过百度、谷歌搜索引擎找技术资料,当场演示;
如何查看并翻译Msdn,找到对我们有用的资料;
当场一行一行敲代码,发现问题并解决问题;
当场调试代码,如何解决问题的,GetLastError 的使用等等;
主要还是一些动手的细节吧,多在课堂上演示;
多用C++本身的东西,或者 C++和 SDK Api 的东西,方便大家以后转型。

第1课免费试看,下载地址回复后可见:
游客,如果您要查看本帖隐藏内容请回复

#######################################################
获得所有教学视频、课件、源代码以及售后答疑请咨询客服QQ:
VC驿站官方客服QQ:8260671
#######################################################




下一篇:《实用VC编程之玩转控件》第2课:MFC对话框工程的建立与使用

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

98_avatar_middle
在线会员 tomok 发表于 2018-11-2 08:14:04 | 显示全部楼层
坚持学习
支持论坛

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

98_avatar_middle
在线会员 tomok 发表于 2018-11-2 08:14:39 | 显示全部楼层
支持论坛 !
认真学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

98_avatar_middle
在线会员 tomok 发表于 2018-11-2 08:15:23 | 显示全部楼层
支持论坛  认真学习!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

78_avatar_middle
在线会员 csa 发表于 2018-11-2 08:57:08 | 显示全部楼层
看过介绍,很期待此课程的更新,请问站长大概什么时候会推出此课程,谢谢。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
ico_lz  楼主| Syc 发表于 2018-11-2 09:50:32 | 显示全部楼层
csa 发表于 2018-11-2 08:57
看过介绍,很期待此课程的更新,请问站长大概什么时候会推出此课程,谢谢。

这周末就开始发布更新啦~多谢大家的支持!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

38_avatar_middle
online_vip 2191265529 发表于 2018-11-2 11:09:03 | 显示全部楼层
顶啊,死顶《实用VC编程之玩转控件》第1课:Windows编程简介

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

35_avatar_middle
online_vip 52trycn 发表于 2018-11-2 14:43:54 | 显示全部楼层
vc驿站,开车啦!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

02_avatar_middle
在线会员 Dvol 发表于 2018-11-2 14:57:27 | 显示全部楼层
@SummerGull 期待

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

71_avatar_middle
在线会员 6417904 发表于 2018-11-3 08:13:04 | 显示全部楼层
forum.php?mod=viewthread&tid=7892&highlight=3306

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

75_avatar_middle
在线会员 coldBro 发表于 2018-11-3 10:59:23 | 显示全部楼层

vc驿站 支持

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

41_avatar_middle
online_vip liguolong 发表于 2018-11-3 16:40:32 | 显示全部楼层
楼主辛苦了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

22_avatar_middle
在线会员 fashion530 发表于 2018-11-3 23:47:52 | 显示全部楼层
《实用VC编程之玩转控件》第1课:Windows编程简介《实用VC编程之玩转控件》第1课:Windows编程简介《实用VC编程之玩转控件》第1课:Windows编程简介

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

08_avatar_middle
在线会员 SummerGull 发表于 2018-11-4 12:49:10 | 显示全部楼层

不是特别爱看 视频 比较喜欢看书 不过 来支持下站长更新。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

22_avatar_middle
online_vip jesy 发表于 2018-11-4 17:22:41 | 显示全部楼层
看下啊........

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

07_avatar_middle
在线会员 hardtoking 发表于 2018-11-5 02:26:46 | 显示全部楼层
会顶替苛栽 塔顶载栽 基本原则霜期

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

62_avatar_middle
online_vip08 longquan 发表于 2018-11-5 15:04:30 | 显示全部楼层
支持新的教程,好好学习!!《实用VC编程之玩转控件》第1课:Windows编程简介

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

39_avatar_middle
在线会员 凌天 发表于 2018-11-5 21:36:00 | 显示全部楼层
支持支持,希望发展的更好!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

28_avatar_middle
online_vip 雄关之光 发表于 2018-11-6 23:22:26 | 显示全部楼层
支持支持,坚持学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

21_avatar_middle
在线会员 Sxm257 发表于 7 天前 | 显示全部楼层
Button                按钮控件 CheckBox        复选框控件 Edit                        编辑框控件 ComboBox        下拉控件 ListBox                列表控件 GroupBox        分组控件 Radio Button        单选框控件 Static Text        静态文本框控件 Picture Control        图像控件 Slider Control        滑块控件 Spin Control        数值调节钮控件 Progress Control        进度条控件 List Control        高级列表控件 Tree Control        树形控件 Tab Control        标签控件

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-11-14 20:14

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表