一、VC是什么?学VC是学什么?

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!习进阶更高效! 阅读详情


首先VC是一个软件(IDE集成开发环境)(编译、编辑、调试)

C和C++。但C++中的有些特性是不用的,例如I/O流,多态继承

WindowsSDK(软件开发工具)

VC的灵魂:MFC(微软基础类库)

ATL(ActiveX模板类库)

其他的SDK,如OpenGL,DirectX,ActiveMoive,DrawDib(WinG)


VC是许许多多技术的综合,就好象少林72般绝技,一般在应用中学会其中很少一部分就够了。我们的现在目的,其实不过是学一套少林长拳。这套长拳应包括:

1、养成一种严谨的软件开发习惯,熟悉软件工程的基本原则。

2、C语言基础

3、C++最基本内容:类、继承性、封装性、多态性的概念

4、如何用向导建立一个程序框架

5、设计菜单

6、设计工具条

7、设计和使用对话框,熟悉最常用的对话框控件:按钮、静态文本、编辑框等

8、知道怎样新建类、成员函数、成员变量、消息处理函数。

9、了解最常用的Windows消息:如WM_PAINT(重绘窗口),鼠标按下、弹起、移动,初始化对话框,等。

10、了解最简单的GDI(图形设备接口):写文字、画框、画点、画线、画圆,设置画笔、画刷。

11、熟悉最常用的MFC类:

CWnd

CDocument

CView

CDC

CDialog

CWinApp

CGdiObject及子类

CString、CPoint、CRect、CSize等简单数据类型

CFile

以上提到的这些内容,是每个人都会用到的内容。


二、MFC简介

上述主要内容都是与实际操作关系非常密切的,在此不可能讲清楚;而且,这些在一般的书里都会讲到。我主要将最重要的MFC介绍一下。

MFC是对WindowsAPI的封装,大大简化了我们的工作;学VC主要就是要学MFC,大约有100多个类,但常用的也就二三十个。应该象背4级单词一样将这些常用类搞懂;当然不要死记,要通过看帮助、看例子、动手练习来学会它们;而且,并非每个类的内部的所有函数都要学会,要日积月累。如果真的想成为高手,做个笔记本把自己认为重要的类、函数记下来,随时学习,也是很好的突击方法。

下面介绍最重要的MFC。

CWnd:窗口,它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。该类很大,一开始也不必学,知道就行了。

CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)

CView视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。你自己的许多功能都要加在里面,你打交道最多的就是它。

CDC设备文本。无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。

CDialog对话框

CWinApp应用程序类。似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。最常用函数InitInstance():初始化。

CGdiObject及子类,用于向设备文本画图。它们都需要在使用前选进DC。

CPen笔,画线

CBrush刷子,填充

CFont字体,控制文字输出的字体

CBitmap位图

CPalette调色板

CRgn区域,指定一块区域可以用于做特殊处理。

CFile文件。最重要的不外是Open(打开),Read(读入),Write(写)

CString字符串。封装了C中的字符数组,非常实用。

CPoint点,就是(x,y)对

CRect矩形,就是(left,top,right,bottom)

CSize大小,就是(cx,cy)对(宽、高)

三、用好MSDN和例子

作为提高,推荐看的例子有:

nHello最简单的程序框架

nScribble鼠标绘图。教程:编程基础,GDI

nDiblook图像处理最简单范例

nMFCIE因特网浏览器

nEnroll数据库

nDaoviewDao(数据访问对象)范例。树型和列视控件

nCubeOpenGL范例,画一个不断旋转的方块

nHierSvrOLE服务器

nOclientOLE包容器

nDrawcli鼠标绘图。也包括OLE。

nWordPad写字板。OLE

四、几点经验

A.为什么要用Windows而不是DOS编程

Windows编程并不比DOS编程难很多,只是在刚刚接触的时候感到头绪繁多,不知从何下手。实际上,如果你会C语言,你会发现Windows编程的难度并不比当年学C语言时大。DOS编程要想成为高手,也需要学习几百个函数(无论是TC、BC、MicrosoftC),并要深入了解汇编语言级的DOS功能调用。而现在在Windows下,付出相同的工作量,你却可以获得几倍的收益。如果你以前熟悉DOS编程,现在再搞Windows编程,只要两个星期肯定会感到巨大的优越性:在DOS下,每一件事都要自己干,而且还有64K内存、显示精度等的限制,实在是事倍功半了。


B.为什么要用VC而不是其他Windows编程语言

n大多数大型软件(包括Windows自己)都是用C、C++编的,所以可以利用的源代码特别多。例如Photoshop,就有VC的编程接口。的其他的语言都不如VC有历史优势。而且VC的开发工具特别多,从控件公司到硬件开发商,其产品很少敢不提供VC接口的。

nVC适合组织大工程(VB就不行)

nBorlandC++或C++Builder也很不错,并不比VC差。但BC的版本兼容性不好,从3.1到4.0就出现“代沟”,而且VC提供了极为丰富的文档和范例,VC的参考资料也远比BC多。并且VC与其他的VisualStudio成员可以协调工作,对软件工程有利。

n

C.开始不要学WinAPI编程,但以后最好学学WinAPI

特别要注意,开始不要买讲WindowsSDK编程的书。一个臭名昭著的例子就是“HelloWorld”。各种计算机语言在入门课中往往都给出一个例子,显示一行文字“HelloWorld”,无论是在Basic、C、Pascal,甚至汇编中,这个最简单的小程序都几行就可以写完。但在早期的Windows编程中,刚才讲到的“HelloWin”这个有名的例子就要组织一个工程、写上几百行代码才能实现。这就吓跑了很多想学Windows编程的人。实际上,在Windows下显示“Helloworld”,最简单的方法只要5行就够了:

#include“windows.h”


voidWinMain()

{

MessageBox(NULL,”HelloWorld!”,”MyFirstWindowsApplication”,MB_OK);

}

当然这个程序只建立了一个最简单的对话框,但这已经够了。

如果你没有SDK编程的经验,学VC就是要利用MFC绕过Windows编程的许多细节。有好的工具为什么不用呢?现在你在VC写一个”HelloWorld”,只要写一行代码就可以了。

voidCYourView::OnDraw(CDC*pDC)

{

//…….其他的代码

pDC->TextOut(100,100,”HelloWorld!”);

}

但MFC不是万能的,WinAPI和VC中有很多功能在MFC中并不能反映出来。在入门后,要想发挥VC的完全能力,WindowsAPI还是非常重要的。而且,这些API在其他Windows语言中也用得到。

学语言,与练武道理也差不多。VC、VB、Dlphi、VFP,以及其他的Windows编程语言,都属于同一个门派:Windows门,虽然招式不同,但内功都是一样的,这就是WindowsAPI(应用编程接口),大概是两千个函数。任何武功,招式即使再复杂,通常也能在很短时间内记下来;但内功就不是一朝一夕的事。而且,各门派的内功不同,Unix、Linux门有Uinx的内功,Apple(苹果)门有Mac的内功,Java更是自成一派。我们这里说的学VC,只是学招式,学招式一个月差不多就够了,聪明的两个星期就可以掌握。光学招式,吓唬人是够了,但和高手一过招,非出丑不可。要想精通VC,必须熟悉WindowsAPI。



D.高级语言与自然语言

一门高级语言与一门自然语言是类似的。关键要素有三:

语法:了解C和C++基本语法,这是比较容易的。

修辞:编程的艺术和风格。通常,这是与软件工程联系起来的。算法上的小伎俩并非是关键的。严谨,严格按照规范去做,同时又能发挥出极大的创造性,才是语言学家的本色。

词汇:如何利用别人的工作?如何利用自己以前的工作?这是一个软件工程师成功的关键。如果词汇量不丰富,就写不出好文章,就会有想法表达不出。一个人的语法在上小学之前就基本上学成了,修辞水平也在年轻时就确定了,惟有词汇量需要根据需要不断学习、不断扩充。VC编程中,拥有大的词汇量就意味着要掌握较多的类、函数和其他编程组件。如:WindowsSDK,MFC,以及你所专攻的领域的现成的SDK,比如3D编程中的OpenGL,多媒体编程中的DirectX,图像处理中的Victor库。另外,ActiveX控件的掌握往往也是成败的关键。我们这几年的工作也总结成了一个类库,叫IPX(图像处理框架),大大简化了图像处理的工作;不过现在还有很多细节问题要解决,如果有同学感兴趣可以参与这方面的工作。

学习VC,千万不要用我们在学校里学英语的方法,而要用小孩学说话的方法。所谓学英语的方法,就是我们在本科时学C语言的那种模式:详细搞懂每一个细节,背大量的规则,很少上机实践,没有实际问题供解决,最后由考试来断定学习成果。这种模式的后果大家都清楚:我们学了十几年英语,可有不少人还只会四五千个单词,写百把字的文章,不会说,不能听;尤其要命的是,看不懂VC的帮助文档。我们要象婴儿一样,在使用中学会语法、修辞和词汇;一开始肯定只能编出最糟糕的,就好象小孩开始只会说:“爸爸坐车车”;但“爸爸”“车车”这些词对小孩是最需要的,学习的效率反而最高。学VC的时候,应从我的需要出发,先做一个最简单的东西,然后一点一点复杂起来,象滚雪球一样。

学习VC尤其要和别人交流,你苦苦思考不明白的,也许别人早就解决了。一定要善于学习:从书店找出有用的书;向身边的高手学习;寻找可以利用的源代码、类库、组件、控件、库;如果能上互连网,那就更加能解决问题了。
参考资料:http://sentven.blogchina.com/3647789.html

VC++、C++、C和TC有什么区别? VC++、C++、C和TC,这几个语言名中都带有C,可以说和C都有联系。 1.C C就是指C语言。C语言的关键字少,而且拥有丰富的运算符和数据类型,可以解决大部分的“计算型”的问题或者“描述型”的问题。各大操作系统都提供了各种对C语言的集成化的调试编译环境,使用C语言编写的程序可以轻松地运行在各种平台上而不用做出任何修改,这也是C语言流行的原因。 2.VC++ VC++,般是指微软公司的Visu... 阅读详情

相关推荐

visual c++操作手册

”框中会出现上面建立的工程的路径如“C:\myc\helloc”,同时要左边的“C++ Sourse Files”(图1.5),单击“确定”按钮,在“C:\myc\helloc”下就新建了文件hello.c,并显示编辑窗口和信息窗口(图1.6)。)”框中会出现上面建立的工程的路径如“C:\myc\helloc”,同时要左边的“C++ Sourse Files”(图1.5),单击“确定”按钮,在“C:\myc\helloc”下就新建了文件hello.c,并显示编辑窗口和信息窗口(图1.6)。

weixin_40704392的博客 6325

VC++6.0从入门到精通

关于VC++的使用和C++的编程开发,相信对C++爱好者用很大的作用,加油加油。。

VC9、VC11、VC14、VC15是啥?

:先看个关系对应 vs发布版本与vc版本对应关系如下所示: Visual Studio 6 : vc6 Visual Studio 2003 : vc7 Visual Studio 2005 : vc8 Visual Studio 2008 : vc9 Visual Studio 2010 : vc10 Visual Studio 2012 : vc11 Visual Studi...

yu_20170610的博客 1万+

VC编程软件——详细介绍和示例代码

VC种常用的编程软件,它广泛用于开发Windows操作系统下的应用程序。VC全称为Visual C++,是由微软公司提供的套集成开发环境(IDE),用于C++编程。本文将详细介绍VC的特点、用途以及示例代码。综上所述,VC种功能强大的编程软件,适用于开发Windows平台下的各种应用程序。开发者可以利用VC提供的集成开发环境和功能库,快速编写高性能的应用程序。希望本文提供的介绍和示例代码对你有所帮助。

TechRoar的博客 4054

vc入门

VC是什么?VC什么?首先VC个软件(IDE集成开发环境)(编译、编辑、调试)C和C++。但C++中的有些特性是不用的,例如I/O流,多态继承WindowsSDK(软件开发工具)VC的灵魂:MFC(微软基础类库)ATL(ActiveX模板类库)其他的SDK,如OpenGL,DirectX,ActiveMoive,DrawDib(WinG)VC是许许多多技术

我们一直在努力--by老虎爱吃鱼 2112

VC++是什么?

VC++是什么?     这个问题很奇怪吗?大概是。不过,当我又看到有人发表诸如“Windows/Office是VC编写的”或者“VC是无所不能的”这种高论,我就禁不住这样问自己。     Visual C++究竟是什么?你平常在其中工作的那个标记着“Microsoft Visual C++”的窗口,真的就代表Visual C++吗?     按照我的理解,Vis

liuyi1987827728的博客 1万+

老王融资(VC伴你路成长

记录自己在习创业企业融资过程中的些心得体会,本篇文章是系列文章的第1篇,概述了初创企业从起步到IPO上市几个主要阶段的股权变化情况和大事件。

老和山下 1484

vc,编游戏》源码

       建立了个对话框,引入有关图形处理的数据结构 HBITMAP(设备相关位图)、HDC(设备场景)、介绍了位图拷贝命令BitBlt()、LoadBitmap 的应用实例HBITMAP bit;BOOL loadbmp(CString cc){   DeleteObject(bit);   bit=(HBITMAP)LoadImage      (AfxGetInsta

BlUe H0Use 1256

到底还该不该VC????

由于VC入门难,开发进程慢等因素,听说国内公司用VC开发较少本人是名在读大三生虽然对VC++很是着迷,但心里其实纳闷,那到底该不该MFC呢?时间实在是有限啊,如果了以后不用了,那时间就差不多等于浪费了,虽然其它像delphi的VCL等原理相差不是很多

阿七的专栏 1218

VC 编游戏》重点算法解疑·前言

    写了这么多了,合计起来有7篇文章,也有10000左右的纯汉字,当初提笔的初衷之是我考虑这个系列或多或少地对坛友们会有些用,第二是想体现下自己的个人价值(说得恶心请原谅),但愿对你们能有用,读懂这些系列文档的配置是你研究过这本书并有VC,MFC的基础知识,了解OPP及些Win32的系统低层基础知识,坛子里有人说他不懂VC++,甚至VC++的代码跟其它语言写成的源程序他都

BlUe H0Use 965

如何在短期内VC

、本文目的 二、范例:如何通过向导建立个程序框架 三、VC的目的 四、VC的基本内容 五、MFC简介:CWnd、CDocument、CView、CDC、CDialog、CWinApp、、CGdiObject、CString、CPoint、CRect、Csize、CFile 六、习的软硬件条件 七、几点经验 1、 我们的目的: 如何速成VC,在1个月左右的时间掌握VC的最基本内容。 想

勇者无畏 1973

VC Spyglass:Lint官方Hands-on Training(

本文是对VC Spyglass Lint Hands-on Training中第个实验的翻译(有删改),Lab文件可以从以下链接获取。

博客是兴趣使然,大家互相学习 3020

VC编游戏笔记

当我在回头看这笔记时,我只能目瞪口呆,我对它万分失落,原本想用它找回些记忆,可是收获寥寥无几!-------习《VC编游戏》教程的笔记-------《VC编游戏》教程中的程序流程:seven---类的初始化:设置小地图的属性(大小及位置)创建小地图DC创建小地图画笔设置大地图及小地图的当前状态标志(是否移动......)---初始化DirectX环境创建DirectDraw对象,并且设置对

Seven World 1444

VCC的最后境界!?

   我从开始C起,就听着VC的名号,但直都没用它写作品,也许是没有逼急了吧。我进入WINDOWS使用的第种RAD工具是DELPHI,虽然我不懂DELPHI的语法,但照样可以写程序,因为很Ctrl+J让语法变的不那么重要。这个后果是我只懂使用工具,而不懂工具的原理,不象在DOS下,什么都自己写,什么都自己设计,所以,我直认为,虽然BORLAND公司的东西很好,但更适合商业开发,因为商业讲究

vrix的专栏 1714

VC维(VC dimension)

参考文献:learning from data——Yaser S. Abu-Monstafa/ Malik Magdon-Ismail / Hsuan-Tien Lin

My Sunshine 1万+

如何VC开发WINDOWS程序讨论(

    经常看到有很多朋友问关于vc编程习的问题,我也回答过些,今天我和个朋友讨论了关于vc编程的问题,整理下,对初这或许有些帮助。A:deadhorse  B:朋友 A:说说你的实际情况B:我程序其实才1年零3月,开始php,现在工作也是写php。(deadhorse:其实并不需要太多基础,这个我以前说过,只要3点。1,熟悉计算机应用;2,有较强逻辑思

deadhorse的专栏 1504

VC还是从SDK开始的好

段时间的VC了,SDK也精略地看过,后来转向MFC,也看过候俊杰的〈深入浅出MFC〉也研究过李久进(http://www.vczx.com/tutorial/mfc/mfc.php)的MFC习。进展不大。反过来还是先透SDK的好

coppersmith的专栏 611

VC维(VC Dimension)

定义 VC Dimension:全称是Vapnik-Chervonenkis dimension。其用来衡量个模型的复杂度,定义为:在该模型对应的空间中随机撒x点,然后对其中的每个点随机分配个2类标签,使用你的模型来分类,并且要分对,请问x至多是多少。这个x就是VC维。 例子 1.线性函数 如果选用二维空间中的直线作为判别函数,该分类模型的VC维是多少? 答案:3 解释:如果是3个点,无论如何随机的打标签,都存在条直线都可以将两类样本分开。 如果是4个点,就可能会出现种标签序列,使得不存在条直线将

qq_43391414的博客 1万+
上一篇: C++基础的回顾
下一篇: STL中的常用的vector,map,set,Sort用法
smail_flyer
博客等级 码龄17年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值