声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 7683|回复: 17

[C/C++] [准转帖]VC是什么?学VC是学什么?

  [复制链接]
发表于 2010-11-18 21:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 Rainyboy 于 2010-11-18 21:25 编辑

       咱们分区的很多同志提问时比较喜欢用“VC中……”来说,但是我个人觉得Visual Stdio这套东西发展到现在已经经历很多的变革,微软主推的程序语言和程序框架也已经经历了很多变化,因此我常常不清楚同志们说的是MFC框架还是STL程序或者是.NET框架程序,Visual Stdio历次版本都是在提供一个”框架“,而其次才是一个编译器的功能。              正如CSDN的一个版友所说:
  1. C++和VC++的关系,如同开车技术和一辆大众车的关系一样,C++是一门具体的面向对象的语言。而VC++是Microsoft推出的一款基于C++语言的软件开发工具,这就好比你掌握了开车技术以后就可以去开大众车一样,VC++只是一辆具体的车,而C++则是开车的一门技术。
复制代码



   我百度百科了一下,看到了下面的段落,大概作者写这个的时候还没有接触.net吧,但是足够说明问题了。



VC是什么?学VC是学什么?

  首先VC是一个软件(IDE集成开发环境)

  C和C++。
  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编程语言
  >大多数大型软件(包括Windows自己)都是用C、C++编的,所以可以利用的源代码特别多。例如Photoshop,就有VC的编程接口。的其他的语言都不如VC有历史优势。而且VC的开发工具特别多,从控件公司到硬件开发商,其产品很少敢不提供VC接口的。
  >VC适合组织大工程(VB就不行)
  >BorlandC++或C++Builder也很不错,并不比VC差。但BC的版本兼容性不好,从3.1到4.0就出现“代沟”,而且VC提供了极为丰富的文档和范例,VC的参考资料也远比BC多。并且VC与其他的VisualStudio成员可以协调工作,对软件工程有利。
  C.开始不要学WinAPI编程,但以后最好学学WinAPI
  特别要注意,开始不要买讲WindowsSDK编程的书。一个臭名昭著的例子就是“HelloWorld”。各种计算机语言在入门课中往往都给出一个例子,显示一行文字“HelloWorld”,无论是在Basic、C、Pascal,甚至汇编中,这个最简单的小程序都几行就可以写完。但在早期的Windows编程中,刚才讲到的“HelloWorld”这个有名的例子就要组织一个工程、写上几百行代码才能实现。这就吓跑了很多想学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、Delphi、VFP,以及其他的Windows编程语言,都属于同一个门派:Windows门,虽然招式不同,但内功都是一样的,这就是WindowsAPI(应用编程接口),大概是两千个函数。任何武功,招式即使再复杂,通常也能在很短时间内记下来;但内功就不是一朝一夕的事。而且,各门派的内功不同,Unix、Linux门有Uinx的内功,Apple(苹果)门有Mac的内功,Java更是自成一派。我们这里说的学VC,只是学招式,学招式一个月差不多就够了,聪明的两个星期就可以掌握。光学招式,吓唬人是够了,但和高手一过招,非出丑不可。要想精通VC,必须熟悉WindowsAPI。


        =======================
        总的来说,VC是微软公司出品的一个编译环境更是微软公司为了程序员更方便的在windows环境下编程而提供的一套工具



评分

2

查看全部评分

回复
分享到:

使用道具 举报

发表于 2010-11-18 23:16 | 显示全部楼层
呵呵,楼主很细心啊。很多人都弄不清楚这个问题,我也学习了……
 楼主| 发表于 2010-11-19 08:25 | 显示全部楼层
本帖最后由 Rainyboy 于 2010-11-19 08:56 编辑

回复 2 # captain114 的帖子

唉,前些时候看到一个同学用VC6.0编程序,还在用printf输出中间结果来检查程序……
我问他说你知道VC6.0提供的那些调试功能么,打断点什么的?
他问我,什么是断点?

我周围的很多人都是把VC当一种语言来看待……而不是工具,以前看过一篇比这个更好更全面的文章,但是一时半会找不着了,所以就先贴了百度百科的上来,里面有些说法还是值得商榷,呵呵
发表于 2010-11-19 10:14 | 显示全部楼层
回复 3 # Rainyboy 的帖子

呵呵。那就先从我们自己做起啦,我们先把概念搞清楚,理解透彻了。对编程肯定是有好处的哈。共勉,共勉。
发表于 2010-11-19 14:42 | 显示全部楼层
说实在的,我觉得只要说c或者c++就行了,除非你是针对windows的api的编程,否则就没有必要说visual c++。不过时ide的不同而已。
如果你是针对windows的api来编程,那直接说windows的api就行。
不过当然使用windows成为一个习惯,也认为别人也都是在做windowsapi扩展之类的事,那就会这样说了!
发表于 2010-11-19 21:00 | 显示全部楼层
回复 3 # Rainyboy 的帖子

lz很细心,其实我感觉这是一种习惯问题吧,大家也知道vc不是一种语言。
 楼主| 发表于 2010-11-20 13:46 | 显示全部楼层
回复 6 # impulse 的帖子

呵呵,其实在.NET框架中所使用的 managed C++(托管C++)不就是微软对C++做了修正后的一种语言么,在这种运行在CLR (公共语言运行时)上的C++语言中,为了向托管堆中新建一个对象,要用gcnew 替代new ,返回的是对象的一个句柄而不是对象的指针……曾经给我带来的很大的困惑……所以为了分清纯粹的语言,和服务于某一平台的语言,还是多纠一些细节的好,呵呵
发表于 2010-11-23 13:44 | 显示全部楼层
习惯问题了 不懂的时候以为VC是语言
懂了之后还是这么叫了  你用什么编程?c语言类的有四种答案 答案1C  答案2C++ 答案3VC 答案4VS
刚学习的时候都有这个经历吧
发表于 2010-11-23 16:35 | 显示全部楼层
就好像一提装系统就默认是装Windows一样,说VC只是一种习惯,大部分人听了都理解是什么意思,所以就都懒得纠正这个说法了。
发表于 2011-1-14 10:36 | 显示全部楼层
楼主辛苦,浏览学习
发表于 2011-2-9 11:52 | 显示全部楼层
编了一点程序以后就会发现 VC是ctrl V ctrl C

点评

赞成: 5.0
赞成: 5
精辟啊……  发表于 2011-2-9 20:44
发表于 2011-3-7 20:20 | 显示全部楼层
学习学习
发表于 2012-11-14 19:28 | 显示全部楼层
说了很有道理,当年学了一段时间,可惜后来没弄了
发表于 2014-6-14 16:39 | 显示全部楼层
支持你加分











http://zhishijia.org/sitemap.html   http://ppspptv.org/sitemap.html   http://zhidaotong.org/sitemap.html  
发表于 2014-6-21 23:30 | 显示全部楼层
学习了,谢谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 10:32 , Processed in 0.081311 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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