第1章VC++6.
0程序设计简介VisualC++6.
0是微软公司1998年推出的产品.
自1993年微软公司推出VisualC++(简称VC++)后,随着其新版本的不断问世,VC++已成为专业程序员进行软件开发的首选工具.
虽然后来又有VC++7.
0,但由于受操作系统的局限不能有效推广,而VC++6.
0友好的开发界面,使其一直都是非常流行的开发工具.
VC++6.
0不仅是一个C++编译器,还是一个基于Windows操作系统的可视化集成开发环境.
VC++6.
0由许多组件组成:包括编辑器、调试器、程序向导(AppWizard)、类向导(ClassWizard)等.
这些组件通过DeveloperStudio集成为和谐的开发环境.
本章将对VC++集成开发环境及集成开发环境的使用进行简单的介绍.
1.
1VisualC++6.
0集成开发环境VC++6.
0集成开发环境的主窗口由标题栏、菜单栏、工具栏、工作区、客户区、输出区及状态栏等组成,如图1.
1所示.
图1.
1VC++6.
0集成开发环境标题栏:用于显示应用程序名及当前打开的文件名.
菜单栏:集成开发环境的操作菜单.
工具栏:与菜单相似的一些操作按钮,如新建、保存等.
工作区:用于显示当前打开工程的有关信息,包括工程的类、资源及文件组成等内容.
客户区:用于文本编辑器、资源编辑器等文件和资源的编辑.
输出区:用于输出编译信息、调试信息和一些查询结果信息.
状态栏:用于显示菜单栏、工具栏等的简单说明,以及文本编辑器中当前光标所在行列号等信息.
1.
1.
1VC++6.
0集成开发环境菜单栏及工具栏简介菜单栏及工具栏是VC++6.
0集成开发环境的常用工具.
通过这两部分可以更加方便地编辑代码、编译程序.
菜单栏子选项非常多,工具栏与之对应的选项也是举之不尽,以至于笔者不能在本章一一介绍.
本节将对关键且常用的菜单选项及工具栏选项进行简单的介绍.
菜单栏由File(文件)、Edit(编辑)、View(视图)、Insert(插入)、Project(工程)、Build/Debug(编译/调试)、Tools(工具)、Window(窗口)及Help(帮助)9个主菜单构成.
当然,除了这些主菜单外,还有一些弹出菜单.
本节中将主要针对这9个主菜单进行讲解.
File(文件)菜单:主要实现与文件有关的操作,如新建、打开、关闭、保存、另存为、全部保存等;另外还显示一些最近打开的文件、项目及工作区.
Edit(编辑)菜单:主要实现一些与文件编辑有关的操作命令,如赋值、粘贴、剪切、查找、替换等.
View(视图)菜单:主要用于改变窗口的显示方式,以及激活一些窗体.
Insert(插入)菜单:主要实现与添加有关的一些操作,如添加新类、添加新的资源、添加新的代码文件等.
Project(工程)菜单:与工程项目相关的一些操作,如常用的向工程中添加源代码文件、设置当前项目、改变编译器及连接器等.
Build/Debug(编译/调试)菜单:主要实现与编译、调试相关的操作,如编译、重新编译、连接、执行程序等.
这个菜单中的项目在做工程时是使用最多的.
Tools(工具)菜单:主要实现启动常用集成开发环境常用工具栏的功能,如启动调试工具栏、启动绘图工具栏等.
Window(窗口)菜单:主要实现与窗口显示有关的操作,如新建窗口、切换窗口、拆分窗口等.
Help(帮助)菜单:主要用于集成开发环境的帮助操作,如启动MSDN、版本说明等.
1.
1.
2VC++6.
0集成开发环境工作区简介一般工程的工作区有两个模块:ClassView(类视图区域)及FileView(文件视图区域).
如果工程还有资源(对话框资源、位图资源等),在类视图区及文件视图区中央还会有一个ResourceView(资源视图区).
如图1.
2所示的工程就有3个区域.
在3个区域中分别用不同的方式管理着同一个工程.
(1)类视图管理工程中所有的类.
也就是将工程中所有的类、结构体都作为类视图中的一个节点,而类的函数、成员变量又是这个类节点的子节点.
双击这个类客户区会显示这个类的定义位置;双击类成员函数,则客户区会显示这个类成员函数的实现位置;双击类的成员变量,则客户区会显示变量的定义位置.
图1.
2显示的就是工程的类视图.
图1.
2工作区域的3个视图区(2)资源视图管理工程的所有资源.
无论是对话框、位图还是菜单、工具栏资源都可以在这个视图中进行统计与管理.
每种资源都是一个节点,而每个这种资源又是这种资源的一个子节点.
双击子节点客户区便会显示这个资源的定义.
工程的资源视图如图1.
3所示.
(3)文件视图管理工程中的所有文件.
此视图中可以删除任何一个工程中的文件,但只能在"工程"菜单中才能添加文件.
一个工程中有5种常见的文件:源文件、头文件、资源文件、readme.
text及扩展文件.
每种文件都是文件视图中的一个节点,而工程中任何一个这种文件都是这种文件的一个子节点,单击这个子节点,客户区将显示这个子节点对应的文件.
工程的文件视图如图1.
4所示.
图1.
3工作区的资源视图图1.
4工作区的文件视图1.
2VisualC++6.
0的"HelloWorld!
"本节介绍如何使用VC++开发第一个工程——"HelloWorld!
".
VC++6.
0可以开发很多种工程,每种工程对应着一种应用.
本例将选择本书后面章节中常用到的工程来讲解如何创建VC++6.
0的"HelloWorld!
".
1.
2.
1VC++6.
0可创建的工程简介正如前面所说,VC++6.
0可以创建很多种工程,这一点从选择"文件"|"新建"菜单后打开的对话框就可以看出,如图1.
5所示,图中可以新建文件、工程、工作区及其他文档.
(1)创建的文件有13个种类,每一种都对应着不同类型的文件,如表1.
1所示.
(2)创建工程时会有17种选择,如图1.
6所示.
每种工程对应着一种应用,如表1.
2所示.
图1.
5新建项目图1.
6新建工程表1.
1VC++6.
0创建的文件类型文件类型说明文件类型说明ActiveserverPage网页制作文件ICONFile图标文件BinaryFile二进制文件MacroFile宏文件BitmapFile位图文件ResourceScript资源脚本文件C++SourceFileC++源文件ResourceTemplate资源模板文件C/C++HeaderFileC/C++头文件SQLScriptFileSQL脚本文件文件CursorFile光标文件TextFile文本文件HTMLPageHTML文件表1.
2VC++6.
0可创建的工程及其说明工程类型说明ATLCOMAppWizardATL应用程序ClusterResourceTypeWizard群集资源类型向导,用来创建可以到处用的资源项目CustomAppWizard创建自定义的向导工程DatabaseProject数据库项目DevStudioAdd-inWizard自动化宏工程ExtendedStoredProcWizard扩展存储过程向导ISAPIExtensionWizardInternet服务器或过滤器工程续表工程类型说明MakefileMakefile工程MFCActiveXControlWizardActiveX控件工程MFCAppWizard(dll)MFC动态链接库工程MFCAppWizard(exe)MFC可执行程序的工程NewDatabaseWizard创建新的MSSQLServer数据库UtillityProject创建效用项目,这种项目只作为其他项目的包容器,减少子项目的编联时间,本身并不包含任何文件Win32ApplicationWin32应用程序Win32ConsoleApplicationWin32控制台程序Win32Dynamic-LinkLibraryWin32动态链接库Win32StaticLibryWin32静态链接库1.
2.
2创建基于Win32ConsoleApplication的"HelloWorld!
"下面通过实例学习创建基于Win32ConsoleApplication的项目.
(1)选择"文件"|"新建"命令,打开"新建"对话框.
选择"工程"选项,选中Win32ConsoleApplication.
在右侧工程框中输入工程名,可以任意写.
为了与其他工程区分,本实例起了和工程类型相同的名字Win32ConsoleApplication,如图1.
7所示.
(2)单击"确定"按钮后,将弹出一个向导对话框,选择Anemptyproject,如图1.
8所示.
图1.
7创建Win32ConsoleApplication工程图1.
8向导第1步(3)单击"完成"按钮后,弹出一个确认对话框,单击"确定"按钮.
然后单击工具栏上的"新建"按钮,在客户区输入以下代码:01#include02voidmain(void)03{04cout)前面,如图1.
16所示.
按下快捷键Ctrl+].
如果括号匹配正确,光标就跳到匹配的括号处,如图1.
17所示.
否则光标不移动,并且机箱喇叭还会发出警告声.
图1.
16将要匹配的括号图1.
17匹配结果1.
3.
2快速格式化一段源代码良好的书写风格非常有利于程序的开发,但有时由于某些原因导致代码缩进无序,看着头疼.
如果手动改正则需要大量的精力与时间,VC提供了快速格式化代码的功能,快捷键为Alt+F8.
将缩进无序的代码选中,如图1.
18所示,然后按下Alt+F8键,代码将格式化为有序缩进格式,如图1.
19所示.
图1.
18排序前图1.
19排序后1.
3.
3从工程中彻底删除一个类有时由于中途需求、编码设计的改变,可能需要从工程中删除一些类.
如何快捷彻底地删除这些类是很大的问题,因为类可能有头文件、实现文件等,又放在不同的地方.
笔者当初也为这个问题伤透了脑筋,经过一段时间的探索,终于找到了有效的方法.
首先需要到工作区的FileView中,找到将要删除类的头文件(.
h文件)及类的实现文件(.
cpp文件),然后将这两个文件删除(用Delete键).
再到工程文件夹中将类文件彻底删除,最后再删除clw文件.
打开项目后,选择"编译"|"重新编译所有文件"命令重新编辑项目.
1.
3.
4在VC++中设置头文件和库文件除了VC++默认的头文件和库文件外,还经常会用到第三方的头文件和库文件.
如果它们在项目开发中经常用到,则应选择"工具"|"选择"命令,打开"选择"对话框.
选择"目录"选项卡,在"显示目录为"下拉列表框中选择LiBraryfiles选项.
在"路径"编辑区添加静态链接库的路径,如图1.
20所示.
如果只是本项目要用到,可选择"工程"|"设置"命令,打开工程设置对话框.
在"Link"选项下的"对象/库模块"中添加库文件名称,如图1.
21所示.
1.
3.
5在工作区导入多个项目VC++集成开发环境通过工作区(workspace)组织项目(project),通过项目组织程序.
一个工作区可以组织多个不同的项目,一个项目是一个独立的程序,可以包含多个程序文件.
图1.
20添加集成环境库文件路径图1.
21添加项目库文件在工程需要多个项目来共同完成时,要将这些项目导入到同一个工作区中,使程序处理起来更加方便.
如何将这几个项目导入到同一个工作区中,可能是很多程序员头疼的事情.
首先需要打开一个项目(*.
dsp文件),然后选择Project|InsertProjectintoWorkspace命令,在打开的对话框中选择另一个项目文件(*.
dsp文件).
如此便向工作区添加了两个项目.
再多的项目实现同样可以依此类推.
(提示:在ClassView视图中,用鼠标右键可以激活其中任意某个项目.
1.
4VC++集成开发环境常见问题及解决方法在使用VC++集成环境时,经常会遇到一些问题.
这些问题同程序的编码可能并无关系,但是却会影响整个工程无法实现.
同编码无关的问题即为开发环境配置或使用过程中出现的问题,特别是初学者,对于这些问题可能无所适从.
本节将详细介绍VC集成开发环境中经常遇到的问题及解决方法.
1.
4.
1工程文件简介在介绍VC++集成开发环境的常见问题之前,需要先介绍VC++工程的文件类型,因为这些文件是VC++集成开发环境常见问题的根源,也是解决问题的根源.
常见的工程文件有13种,如表1.
3所示.
表1.
3常见VC++工程文件类型说明类型(文件后缀即扩展名)说明opt工程关于开发环境的参数文件,如工具条位置等信息ncb无编译浏览文件(nocompilebrowser).
当自动完成功能出问题时可以删除此文件,build后会自动生成clwClassWizard信息文件,实际上是INI文件的格式.
有时ClassWizard出问题时,手工修改CLW文件便可以解决.
当此文件不存在时,每次调用ClassWizard的时候会提示是否重建续表类型(文件后缀即扩展名)说明dsp项目文件(DeveloperStudioProject),文本格式dsw(DeveloperStudioWorkspace)是工作区文件,其特点和dsp相似aps资源辅助文件(AppStudioFile),二进制格式plg编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用处不大.
在Tools|Options菜单里有一个Build(编译)选项,可控制此文件的生成hpj(HelpProject)是生成帮助文件的工程,用microsfotHelpCompiler可以处理mdp(MicrosoftDevStudioProject)旧版本的项目文件,当打开此文件时,会提示是否转换成新的DSP格式bsc是用于浏览项目信息,当用SourceBrower时,就必须有这个文件.
如果不用这个功能时,可以在ProjectOptions里去掉GenerateBrowseInfoFile,可加快编译速度map是执行文件的映像信息记录文件pch(Pre-CompiledFile)是预编译文件,可以加快编译速度pdb(ProgramDatabase)记录了程序有关的一些数据和调试信息,在调试的时候有用exp只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息1.
4.
2常见问题及解决方法问题一:如何在项目中加入自己定义的类在进行项目开发时,经常要为项目添加自定义类,如何为项目添加自定义类便成了初学者的一个大问题.
【解决方法】向项目中添加自定义类的方法很多,在这里介绍一个较简便的方法:选择Insert|NewClass命令.
弹出对话框后,选择ClassType为generic,并输入类名.
问题二:时间错误文件只改动了一个文件,却要把整个项目全部重新编译链接一次.
在链接完成后,开始运行时却又提示重新编译链接一次.
这主要是因为出现了时间错误文件的缘故.
【解决方法】找出工程文件夹下的debug目录,将时间错误文件全部删除,再重新编译一次(时间错误是指文件的创建和修改时间都比系统时间靠后).
问题三:WorkSpace中的ClassView显示混乱有时添加的成员变量或函数不能显示,有时即使显示出来了变量或函数,但双击后不能跳至正确的位置.
【解决方法】删除ncb文件,再重新编译全部文件(ReBuildAll).
问题四:ClassView中消失的类有时一些类会突然从工作区的类视图(ClassView)中消失,此时为这个类添加变量、函数,或者查找该类的特定变量、函数定义与实现都极为不便.
【解决方法】此时的类只是隐藏了,打开文件视图(FileView),找到类视图(ClassView)中隐藏类的头文件,按下键盘的空格键,类就会重现在类视图中;也可以关闭工程,删除clw工程文件后,重新打开工程,重新编译全部后再次生成clw.
问题五:对话框上按下Enter键后自动关闭当对话框获取焦点时,按下Enter键,对话框会自动关闭.
这是很多程序员不想做的事情,但是VC工程却提供了默认的这种操作.
【解决方法】有两种办法可以解决这个问题,读者可以根据实际需求进行选择.
(1)去掉对话框上的"确定"按钮的"缺省"属性前面的对勾,重载OnOk()函数,在OnOk()函数里注释掉调用基类中OnOk()函数的那行代码.
(2)重写对话框的PreTranslateMessage()函数,屏蔽Enter键,实现如下:01BOOLCXXXDlg::PreTranslateMessage(MSG*pMsg)02{03if(pMsg->message==WM_KEYDOWN)//键盘按键事件04{05if(pMsg->wParam==VK_RETURN)//Enter键06{07returnTRUE;08}09}10returnCDialog::PreTranslateMessage(pMsg);11}1.
5小结在进行编程之前需要先熟悉开发环境,如本章介绍的开发环境菜单栏、工具栏、客户区、工作区及输出区.
限于篇幅,本章所介绍的内容非常有限(特别是菜单栏的功能非常丰富),所以读者在使用VC++环境的时候需要时时总结,学习的知识只有在实践中使用,才能得到深刻的理解.
VC++可开发的工程项目种类繁多,本章介绍了几种常用工程的开发方法.
如动态链接库、静态链接库、ActiveX等项目虽然也比较常见,但是与本书后面的章节关系比较小,因此没有介绍.
如果读者感兴趣,可以查阅相关的资料,这将对于开发功能更加完善的项目非常有利.
一般大厂都是通过首年才有可以享受爆款活动,然后吸引我们注册他们商家达到持续续费和购买的目的。一般只有大厂才能有这样的魄力和能力首年亏本,但是对于一般的公司和个人厂家确实难过,这几年确实看到不少的同类商家难以生存。这里我们可以看到有对应的套餐方案。不过这两个套餐都是100%CPU独享的,不是有某云商家限制CPU的。但是轻量服务器有个不好的就是带宽是较大且流量是限制的额,分别是1GB和1.2TB月流量...
昨天,有在"阿里云秋季促销活动 轻量云服务器2G5M配置新购年60元"文章中记录到阿里云轻量服务器2GB内存、5M带宽一年60元的活动,当然这个也是国内机房的。我们很多人都清楚备案是需要接入的,如果我们在其他服务商的域名备案的,那是不能解析的。除非我们不是用来建站,而是用来云端的,是可以用的。这不看到其对手腾讯云也有推出两款轻量服务器活动。其中一款是4GB内存、8M带宽,这个比阿里云还要狠。这个真...
spinservers美国圣何塞机房的独立服务器补货120台,默认接入10Gbps带宽,给你超高配置,这价格目前来看好像真的是无敌手,而且可以做到下单后30分钟内交货,都是预先部署好了的。每一台机器用户都可以在后台自行安装、重装、重启、关机操作,无需人工参与! 官方网站:https://www.spinservers.com 比特币、信用卡、PayPal、支付宝、webmoney、Payssi...