VisualC的优点Word格式.docx
《VisualC的优点Word格式.docx》由会员分享,可在线阅读,更多相关《VisualC的优点Word格式.docx(16页珍藏版)》请在冰点文库上搜索。
![VisualC的优点Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/501aa184-3a44-48ac-b3e1-b029b05c75c8/501aa184-3a44-48ac-b3e1-b029b05c75c81.gif)
代码如下
BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
//}}AFX_MSG_MAP
ON_COMMAND(ID_FONT_DROPDOWN,DoNothing)
END_MESSAGE_MAP()
经过编译后,代码被替换为如下形式(这只是作讲解,实际情况比这复杂得多):
//BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)
CMainFrame:
:
newWndProc(...)
{
switch(...)
{
//{{AFX_MSG_MAP(CMainFrame)
//ON_WM_CREATE()
case(WM_CREATE):
OnCreate(...);
break;
//}}AFX_MSG_MAP
//ON_COMMAND(ID_FONT_DROPDOWN,DoNothing)
case(WM_COMMAND):
if(HIWORD(wP)==ID_FONT_DROPDOWN)
{
DoNothing(...);
}
//END_MESSAGE_MAP()
}
}
newWndProc就是窗口过程只要是该类的实例生成的窗口都使用该窗口过程。
所以了解了Windows的消息机制在加上对消息映射的理解就很容易了解MFC开发的基本思路了。
《VisualC++开发指南》闻怡洋/文
对VisualC++优点说明介绍
2010-01-1413:
39佚名天极我要评论(0)
本文对VisualC++优点进行学习讲解,在学习研究VisualC++之前,还是先让大家明白什么是VisualC++?
以及VisualC++是什么东西。
对于VisualC++优点的定义,在这里说一下自己的看法,VisualC++已成为专业程序员进行软件开发的首选工具,所以实际中,更多的是以VisualC++6.0为平台,这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。
在有许多程序开发工具可供选择的今天,强调"
C/C++是程序程序员所必须掌握的语言"
难道就没有人真的敢站出来提出质疑吗?
其实,在网络一统天下的今天,任何应用程序都必须经过网络的验证。
谁的软件好用,谁就会被认可。
为了能达到这样的目标,许多Windows程序员都选择了简单易学、能快速有效地开发的VisualBasic、Dephi等工具。
E_book电子阅读器就是其中一例,它是李晓东用VB设计的。
如果这显得太过苍白无力的话,那么让我们先来看看VisualC++,从过去到现在的发展历程。
看看它为什么这么发展。
众所周知,C语言是在70年代发展的语言,由于当时人们设想一种集低级语言和高级语言优点于一身的语言,于是C语言就诞生。
基于它的简结、紧凑、方便和灵活,它很快就成为国际上广泛流行的语言。
然而,C语言终究是面向过程的语言,数据和处理数据的程序是分离的。
当对某段程序进行了修改或删除时,整个程序中所有与其相关的部分都要进行相应的修改,从而程序代码的维护比较困难。
为了避免这种情况的发生。
在C的基础上中引用了面向对象的设计方法。
它是将数据及处理数据的相应函数"
封装"
到一个类中,而使用类数据变量则称为对象。
在一个对象内,只有属于该对象的函数才可以存取该对象的数据。
这样,其他函数就不会无意中破坏它的内容,从而达到保护和隐藏数据的效果。
这就是C++。
当然,面向对象的C++还支持多重继承、模板、操作符重载、内联函数定义、预处理、宏、全局静态类变量、嵌套类定义等等。
C++太复杂了,任何一个使用C++开发者的企业必将付出更多的成本,因为优秀的C++程序员是少而又少。
基于软件企业化的需要,人们很自然地需要一种简单易用、面向对象、安全灵活的"
新一代Windows服务"
(NextGenerationWindowsServices,简写为NGWS)应用程序的语言,于是C#出现了。
它全方位简化了C++的功能,使其具有C++所没有的简单易学的优势。
它既没有C++"
悲剧性"
的指针概念,也没有类似"
:
"
、"
."
和"
->
的"
愚蠢"
操作。
因此我们也可以说,C#才是程序员们所必须掌握的语言。
但是,我们不能忽视这一点,语言总归是程序员的工具,谁具有简单易用、支持最新技术并能快速有效地进行软件开发,谁就是程序员的工具。
如果上述的结论还不能接受的话,那么让我们看看现在C++程序员的窘境吧!
就目前而言,选择C++就意味着选择VisualC++优点,而不C++Builder。
这是C++程序员第一件让人头痛的事。
因为VC与Windows98/NT同出一炉,相同功能的VisualC++应用程序编译后,其大小要比C++Builder小得多。
不仅如此,其稳定性和完善程序要比C++Builder要强得多。
但是"
VisualC++"
这个名字曾误导了很多人,他们认为自己买了一套完全可视的编程系统,类似于VisualBasic,并在刚开始的几天总这样幻想。
然而不久,人们认识到他们必须实际编写和阅读C++代码。
虽然VisualC++优点向导可以节约时间和提高正确性。
但程序员必须理解向导所产生的代码,最主要的,还必须理解MicrosoftFoundationClass(MFC)Library的结构和Windows操作系统的内部工作方式。
许多C/C++的DOS平台的程序员把这种工作方式评价为"
枯燥且艰深晦涩"
的过程。
尽管新版本的VisualC++6.0提供了控制台应用程序类型,使DOS程序员能方便地进入MFC应用程序的开发,但仍然不能从根本上改变上述弊端。
选择了VisualC++,就必然选择MFC,一种程序结构,一种编程风格。
但由于MFC是OWL同时代的产物,已经落后于VCL一个时代了。
从开发出基于ATL的WTL可以反衬出MFC的不足。
这恐怕是VisualC++程序员最窘的地方。
但我们暂且不提MFC过时的尴尬,单是稍稍地改变一下应用程序的外观,VisualC++优点已是力不从心了。
例如,想要改变控件的字体和背景,你得重新生成一个类,而VB只需更改一下属性。
从VisualC++界面设计的网站的火爆可见一斑。
不仅如此,VisualC++程序员也时常感到另外一种尴尬,一个小小的BMP、JPG图片显示,在VisualBasic中轻而易举的事件,到了VC居然需要那么多的代码,而且在数据库应用程序的开发中还常发生许多一些细微的错误,令程序员们大为恼火。
更为甚者,如果有人还想用VisualC++编写Internet/Intranet程序的话,那简直就是自寻烦恼。
虽然,一个优秀VisualC++程序的薪水要比其他程序员高。
但是,他所花费的精力不是其他程序员能比拟的,他不仅需要承担高昂的培训费,而且还要承担90%不成功的概率。
这恐怕是想成为VisualC++程序员的人最苦恼的事。
当然,我们不是劝你放弃使用C/C++语言,相反还十分支持。
因为使用C/C++编写的程序结构和算法能被更多人接受,毕竟C影响了整整20个年头。
但是时过今天,我们还能靠它来"
谋生"
吗?
相信你已经有了自己的答案。
当然,我们之所以跳出来,是希望程序员们不单是在这个方面去思考,更主要的是:
在我们国家软件发展浪潮到来的今天,我们不能再盲从,我们应该关注软件产业、关注互联网产业、关注信息产业。
我们也应该有自己的归宿,难道印度软件大国给我们的启示还不够多吗?
【责任编辑:
苏越TEL:
(010)68476606】
VisualC++6.0调试功能图解教程
(1)--快速入门
(2)2009-10-2017:
11DebugMenuFromMSDN
StartDebugCommands(Buildmenu)
Menu
command
Action
Go
Executescodefromthecurrentstatementuntilabreakpointortheendoftheprogramisreached,oruntiltheapplicationpausesforuserinput.(EquivalenttotheGobuttononthetoolbar.)
StepInto
Single-stepsthroughinstructionsintheprogram,andenterseachfunctioncallthatisencountered.
RuntoCursor
Executestheprogramasfarasthelinethatcontainstheinsertionpoint.Thisisequivalenttosettingatemporarybreakpointattheinsertionpointlocation.
AttachtoProcess
Attachesthedebuggertoaprocessthatisrunning.Thenyoucanbreakintotheprocessandperformdebuggingoperationslikenormal.
Whenyoubegindebugging,theDebugmenuappears,replacingtheBuildmenuonthemenubar.Youcanthencontrolprogramexecutionusingthecommands
listedinthefollowingtable.
DebugMenuCommandsthatControlProgramExecution
Debugmenu
Executescodefromthecurrentstatementuntilabreakpointortheendoftheprogramisreached,oruntiltheapplicationpausesforuserinput.(EquivalenttotheGobuttonontheStandardtoolbar.)WhentheDebugmenuisnotavailable,youcanchooseGofromtheStartDebugsubmenuoftheBuildmenu.
Restart
Resetsexecutiontothefirstlineoftheprogram.Thiscommandreloadstheprogramintomemory,anddiscardsthecurrentvaluesofallvariables(breakpointsandwatchexpressionsstillapply).Itautomaticallyhaltsatthemain()orWinMain()function.
StopDebugging
Terminatesthedebuggingsession,andreturnstoanormaleditingsession.
Break
Haltstheprogramatitscurrentlocation.
Single-stepsthroughinstructionsintheprogram,andenterseachfunctioncallthatisencountered.WhentheDebugmenuisnotavailable,youcanchooseStepIntofromtheStartDebugsubmenuoftheBuildmenu.
StepOver
Single-stepsthroughinstructionsintheprogram.Ifthiscommandisusedwhenyoureachafunctioncall,thefunctionisexecutedwithoutsteppingthroughthefunctioninstructions.
StepOut
Executestheprogramoutofafunctioncall,andstopsontheinstructionimmediatelyfollowingthecalltothefunction.Usingthiscommand,youcanquicklyfinishexecutingthecurrentfunctionafterdeterminingthatabugisnotpresentinthefunction.
Executestheprogramasfarasthelinethatcontainstheinsertionpoint.Thiscommandisequivalenttosettingatemporarybreakpointattheinsertionpointlocation.WhentheDebugmenuisnotavailable,youcanchooseRunToCursorfromtheStartDebugsubmenuoftheBuildmenu.
StepIntoSpecificFunction
Singlestepsthroughinstructionsintheprogram,andentersthespecifiedfunctioncall.Thisworksforanynumberofnestinglevelsoffunctions.
ThefollowingadditionalcommandsappearontheDebugmenu:
Exceptions
DisplaystheExceptionsdialog,whichyoucanusetospecifyhowyouwantthedebuggertohandleyourprogramexceptions.
Threads
DisplaystheThreadsdialog,whichyoucanusetosuspend,resume,orsetfocustoprogamthreads.
ShowNextStatement
Showsthenextstatementinyourprogramcode.Ifsourcecodeisnotavailable,displaysthestatementwithintheDisassemblywindow.
QuickWatch
DisplaystheQuickWatchwindow,whereyoucanworkwithexpressions.
From《visualC++6.0开发工具与调试》
1、如何快速地规范代码缩进格式
选中所需要规范的代码,按shift+F8
2、如何在Release状态下进行调试
Project->
Setting=>
ProjectSetting对话框,选择Release状态。
C/C++标签中的Category选General,Optimizations选Disable(Debug),
Debutinfo选ProgramDatabase。
在Link标签中选中Generatedebuginfo复选框。
注:
只是一个介乎Debug合Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,
但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。
3、Release和Debug有什么不同。
Release版称为发行版,Debug版称为调试版。
Debug中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。
Release版运行速度较快,可执行文件较小,
但在其编译条件小无法执行调试功能。
Release的exe文件链接的是标准的MFCDLL(UseMFCinasharedorstaticdll),比如MFC42.DLL。
这些DLL在安装Windows的时候,
已经配置,所以这些程序能够在没有安装VisualC++6.0的机器上运行。
而Debug版本的exe链接了调试版本的MFCDLL文件,如MFC42D.DLL。
在没有安装VisualC++6.0的机器上不能运行,因为缺MFC42D.DLL等,除非选择usestaticdllwhenlink。
4、ASSERT和VERIFY有什么区别
ASSERT里面的内容在Release版本中不编译,VERIFY里面的内容仍然翻译,但不再判断真假。
所以后者更安全一点。
例如ASSERT(file.Open(strFileName))。
一旦到了Release版本中,这一行就忽略了,file根本就不Open()了,而且没有任何出错的信息。
如果用VERIFY()就不会有这个问题。
5、Workspace和Project之间是什么样的关系
每个Workspace可以包括几个project,但只有一个处于Active状态,各个project之间可以有依赖关系,在project的Setting..中可以设定,
比如那个Active状态的project可以依赖于其他的提供其函数调用的静态库。
6、如何在非MFC程序中使用ClassWizard
在工程目录下新建一个空的.RC文件,然后加入到工程中就可以了。
7、如何设置断点
按F9在当前光标处增加一个断点和取消一个断点。
另外,在编辑状态下,按Ctrl+B组合键,弹出断点设置对话框。
然后单击【Condition…】按钮弹出设置断点条件的对话框进行设置。
8、在编辑状态下发现成员变量或函数不能显示提示是如何打开显示功能
这似乎是目前这个VisualC++6.0版本的一个bug,可按如下步骤使其正常,如再出现,可如法炮制:
(1)关闭Project
(2)删除"
工程名.ncb"
文件
(3)重新打开工程
9、如何将一个通过ClassWizard生成的类彻底删除
首先在工作区的FileView中选中该类的.h和.cpp文件,按delete删除,然后在文件管理器中将这两个文件删除,再运行ClassWizard,
这时出现是否移走该类的提示,选择remove就可以了。
10、如何将再workspace中消失的类找出来
打开该类对应的头文件,然后将其类名随便改一下,这个时候工作区就会出现新的类,再将这个类改回原来的名字就可以了。
11、如何清除所有的断点
菜单【Edit】->
【Breakpoints…】,打开"
Breakpoints"
对话框,单击【RemoveAll】按钮即可。
快捷键是"
Ctrl+Shift+F8"
。
12、如何再Cl