C++技能训练.docx

上传人:b****1 文档编号:10669625 上传时间:2023-05-27 格式:DOCX 页数:15 大小:23.57KB
下载 相关 举报
C++技能训练.docx_第1页
第1页 / 共15页
C++技能训练.docx_第2页
第2页 / 共15页
C++技能训练.docx_第3页
第3页 / 共15页
C++技能训练.docx_第4页
第4页 / 共15页
C++技能训练.docx_第5页
第5页 / 共15页
C++技能训练.docx_第6页
第6页 / 共15页
C++技能训练.docx_第7页
第7页 / 共15页
C++技能训练.docx_第8页
第8页 / 共15页
C++技能训练.docx_第9页
第9页 / 共15页
C++技能训练.docx_第10页
第10页 / 共15页
C++技能训练.docx_第11页
第11页 / 共15页
C++技能训练.docx_第12页
第12页 / 共15页
C++技能训练.docx_第13页
第13页 / 共15页
C++技能训练.docx_第14页
第14页 / 共15页
C++技能训练.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++技能训练.docx

《C++技能训练.docx》由会员分享,可在线阅读,更多相关《C++技能训练.docx(15页珍藏版)》请在冰点文库上搜索。

C++技能训练.docx

C++技能训练

附录二VisualC++技能训练题目

技能训练1:

VC工程管理

【讲解资料】

要拷贝一个完整的工程文件,一般来说只需要拷贝*.cpp、*.h、*.rc、*.dsp、*.dsw文件及RES文件夹,其它文件是中间文件和附件,可以不要。

要重新打开工程,只需双击*.dsw文件或通过菜单“File|OpenWorkspace...”打开该*.dsw。

DEBUG文件夹:

存放测试版的目标文件、可执行文件等

RELEASE文件夹:

存放发行版的目标文件、可执行文件等

RES文件夹:

存放图标(Icon)、光标(Cursor)、位图(Bitmap)等资源

VC默认的版本是DEBUG测试版,要改变版本,通过菜单“Build|SetActiveConfiguration…”

在包含多个工程的情况下,要选择当前操作的工程,通过菜单“Project|SetActiveProject”

【必做题目】《工作区、多工程管理》

1、在一个含两个工程P1、P2的工作区MyWorkspace中加上一个你自己的工程,再删除工程P1。

分别编译、连接、运行各工程。

2、将你的实验工程集中到一个工作区。

3、转移工程,从一个目录(盘)到另一个目录(盘)。

【选做题目】《改变对话框的背景色》

改变对话框的背景色,要做到使上面的静态文本框也以该色为背景。

提示:

可以利用CDialog类的WM_CTLCOLOR消息。

技能训练2:

编译连接错误信息

【讲解资料】

一、C++英语词汇

identifier标识符

formalparameter形式参数

instance实例

instantiate实例化

l-value左值

class类

object对象

abstract抽象

inline[function]内联[函数]

reference引用

declare声明

implementation实现

override重载,过载

default[parameter,constructionfunction]缺省[参数,构造函数]

encapsulation封装

public公有的

private私有的

protected保护的

access访问,存取

inaccessible不可访问的

constructfunction,constructor构造函数

destructfunction,destructor析构函数

duplicate复制

base[class]基[类]

inherit继承

derive派生(类),导出(类)

ambiguous二义性,两义性

virtual[baseclass,function]虚[基类,函数]

operator运算符

friend友元

polymorphism多态性

latebinding迟联编,迟绑定

dynamicbinding动态联编,动态绑定

static静态的

constant[function,object]常量[函数,对象]

volatile易变的

stream流

二、VisualC++6.0英语词汇

visual可视的

resource资源

project工程,项目

workspace工程工作区

debug调试(版)

release发行(版)

Microsoftfoundationclass微软基础类(库)(MFC)

applicationprograminterface应用程序接口(API)

message消息

messagemap消息映像

thread线程

multi-thread多线程

dynamic-linklibrary动态链接库(DLL)

componentobjectmodal组件对象模型(COM)

deviceconnection设备连接,设备描述表(DC)

dialogbox对话框

control控件

clientarea客户区

nonclientarea非客户区

document文档

view视图

serialize序列化

三、常见编译连接错误信息

1、fatalerrorC1010:

unexpectedendoffilewhilelookingforprecompiledheaderdirective

寻找预编译头文件路径时遇到了不该遇到的文件尾。

(一般是没有#include"stdafx.h")

2、fatalerrorC1083:

Cannotopenincludefile:

'R…….h':

Nosuchfileordirectory

不能打开包含文件“R…….h”:

没有这样的文件或目录。

3、errorC2011:

'C……':

'class'typeredefinition

类“C……”重定义。

4、errorC2018:

unknowncharacter'0xa3'

不认识的字符'0xa3'。

(一般是汉字或中文标点符号)

5、errorC2057:

expectedconstantexpression

希望是常量表达式。

(一般出现在switch语句的case分支中)

6、errorC2065:

'IDD_MYDIALOG':

undeclaredidentifier

“IDD_MYDIALOG”:

未声明过的标识符。

7、errorC2082:

redefinitionofformalparameter'bReset'

形式参数“bReset”在函数体中重复定义。

8、errorC2143:

syntaxerror:

missing':

'before'{'

句法错误:

“{”前缺少“;”。

9、errorC2146:

syntaxerror:

missing';'beforeidentifier'dc'

句法错误:

在“dc”前丢了“;”。

10、errorC2196:

casevalue'69'alreadyused

值69已经用过。

(一般出现在switch语句的case分支中)

11、errorC2509:

'OnTimer':

memberfunctionnotdeclaredin'CHelloView'

成员函数“OnTimer”没有在“CHelloView”中声明。

12、errorC2511:

'reset':

overloadedmemberfunction'void(int)'notfoundin'B'

重载的函数“voidreset(int)”在类“B”中找不到。

13、errorC2555:

'B:

:

f1':

overridingvirtualfunctiondiffersfrom'A:

:

f1'onlybyreturntypeorcallingconvention

类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。

14、errorC2660:

'SetTimer':

functiondoesnottake2parameters

“SetTimer”函数不传递2个参数。

15、warningC4035:

'f……':

noreturnvalue

“f……”的return语句没有返回值。

16、warningC4553:

'==':

operatorhasnoeffect;didyouintend'='?

没有效果的运算符“==”;是否改为“=”?

17、warningC4700:

localvariable'bReset'usedwithouthavingbeeninitialized

局部变量“bReset”没有初始化就使用。

18、errorC4716:

'CMyApp:

:

InitInstance':

mustreturnavalue

“CMyApp:

:

InitInstance”函数必须返回一个值。

19、LINK:

fatalerrorLNK1168:

cannotopenDebug/P1.exeforwriting

连接错误:

不能打开P1.exe文件,以改写内容。

(一般是P1.Exe还在运行,未关闭)

20、errorLNK2001:

unresolvedexternalsymbol"public:

virtual__thiscallC……:

:

~C……(void)"

连接时发现没有实现的外部符号(变量、函数等)。

【必做题目】《编译连接错误信息》

看懂VC的编译、连接错误信息,

【选做题目】《控件间的非Tab键移动问题》

在对话框中有若干个编辑框和组合框等控件,在默认的情况下,用Tab键和Shift+Tab键可以在各控件间移动,能否改用↓、↑两个上下箭头键实现移动?

技能训练3:

DEBUG调试与跟踪

【讲解资料】

DEBUG使用:

使用前提:

一、编译、连接无严重错误,二、生成版本是调试版。

设置/取消断点:

Insert/Removebreakpoint(F9)

跟踪到断点:

Go(F5)

跟踪一行代码,遇函数越过:

Stepover(F10)

跟踪一行代码,遇函数进入:

Stepinto(F11)

跳出函数:

Stepout(Shift+F11)

跟踪到光标所在处:

Runtocursor(Ctrl+F10)

查看变量或对象:

Watch

变量或对象的快速查看:

QuickWatch(Shift+F9)

看函数调用:

Callstack

停止跟踪:

Stopdebugging(Shift+F5)

【必做题目】《DEBUG使用》

DEBUG的程序调试跟踪练习

1、设断点

2、开始跟踪

3、单步跟踪

4、越过函数、进入函数

5、变量、对象、函数调用层次查看

6、结束跟踪

【选做题目】无

技能训练4:

查找MFC源代码

【讲解资料】

如何查找MFC类的源代码

有关Windows定义的宏位于

\ProgramFiles\MicrosoftVisualStudio\VC98\Include目录

有关MFC的类声明和宏位于

\ProgramFiles\MicrosoftVisualStudio\VC98\MFC\Include目录

有关MFC的类实现代码位于

\ProgramFiles\MicrosoftVisualStudio\VC98\MFC\SRC目录

通过VC的菜单“Edit|FindinFiles…”,输入适当的查找串和查找范围,进行查找。

【必做题目】《查找MFC类》

1、某个宏名及其相关宏的查找

2、某个MFC类的声明

3、某个成员函数的实现代码

【选做题目】《DLL的编制和调用》

1、做一个DLL,导出若干函数,这些函数至少有两个不同类型的参数并有返回值。

2、调用该DLL。

用LoadLibrary()函数装入DLL,用GetProcAddress()得到DLL中具体函数的入口地址。

技能训练5:

控件

【讲解资料】

操纵控件,有一个非常重要的函数:

GetDlgItem(),它以控件ID号为参数,获得控件指针。

例如:

CEdit*pEdit;

pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);

pEdit->SetWindowText("……");

也可给各控件添加相应的Control型对话框成员对象(通过ClassWizard),这样不必用GetDlgItem了获得控件指针,而是通过控件对象。

例如:

m_edit1.SetWindowText("……");//假设m_edit1为编辑框控件对象

还可直接给各控件添加相应的Value型对话框成员对象(通过ClassWizard),然后用UpdateData()函数实现数据交换,参数填true为交换方向为控件到成员,填false为成员到控件。

例如:

UpdateData(true);

m_strEdit1+="……";//假设m_strEdit1为编辑框的Value型成员

UpdateData(false);

用ShowWindow()使之可见或不可见,用EnableWindow()使之可用或不可用。

【必做题目】《控件》

1、按钮、复选钮、单选钮、列表框、组合框、编辑框、列表控件、进度条

2、获取内容、设置内容、清空

【选做题目】《E-mail的VC实现》

利用MAPI或其它手段,只要输入某数据文件的路径名和对方E-mail地址,然后按一下"发E-mail"按钮,就使该数据文件作为E-mail的附件发给对方。

要发送的数据文件可能是普通文本文件,也可能是数据库文件或图片,甚至是一个*.exe可执行文件。

技能训练6:

EXE软件集成

【讲解资料】

如何运用System、ShellExecute和Navigate三个函数是计算器、QQ、浏览器三个不相关的应用软件集成到一个界面?

用system()进入计算器,用ShellExecute()函数进入QQ,用WebBrowser控件的Navigate()函数进入浏览器。

WebBrowser控件的用法:

先通过菜单“Project|AddToProject|ComponentsandControls...|RegisteredActiveXControls|Insert|MicrosoftWeb浏览器|Insert”,确定,OK。

此时对话框的控件板上多了一个浏览器控件。

然后画上浏览器控件,指定它的对话框成员,写消息响应代码。

这三个函数的用法是(摘自MSDN)

1、system

Executeacommand.

intsystem(constchar*command);

ReturnValue:

IfcommandisNULLandthecommandinterpreterisfound,thefunctionreturnsanonzerovalue.Ifthecommandinterpreterisnotfound,itreturns0andsetserrnotoENOENT.IfcommandisnotNULL,systemreturnsthevaluethatisreturnedbythecommandinterpreter.

Remarks:

Thesystemfunctionpassescommandtothecommandinterpreter,whichexecutesthestringasanoperating-systemcommand.systemreferstotheCOMSPECandPATHenvironmentvariablesthatlocatethecommand-interpreterfile(thefilenamedCMD.EXEinWindowsNT).IfcommandisNULL,thefunctionsimplycheckstoseewhetherthecommandinterpreterexists.

(AbstractfromMSDN)

2、ShellExecute

HINSTANCEShellExecute(

HWNDhwnd,

LPCTSTRlpOperation,

LPCTSTRlpFile,

LPCTSTRlpParameters,

LPCTSTRlpDirectory,

INTnShowCmd

);

hwnd:

Windowhandletoaparentwindow.

lpOperation:

Addressofanull-terminatedstringthatspecifiestheoperationtoperform."open"、"print"or"explore",ThisparametercanbeNULL.Inthatcase,thefunctionopensthefilespecifiedbylpFile.

lpFile:

Addressofanull-terminatedstringthatspecifiesthefiletoopenorprintorthefoldertoopenorexplore.

lpParameters:

Parameterstobepassedtotheapplication.

lpDirectory:

Addressofanull-terminatedstringthatspecifiesthedefaultdirectory.

nShowCmd:

IflpFilespecifiesanexecutablefile,nShowCmdspecifieshowtheapplicationistobeshownwhenitisopened.Thisparametercanbeoneofthefollowingvalues:

SW_SHOWDEFAULT、SW_SHOWMAXIMIZED、SW_SHOWMINIMIZED,etc.

(AbstractfromMSDN)

3、CWebBrowser2:

:

Navigate

voidNavigate(LPCTSTRURL,VARIANT*Flags,

VARIANT*TargetFrameName,VARIANT*PostData,VARIANT*Headers);

URL:

Addressofanull-terminatedstringthatspecifiestheuniversalresourcelocator(URL).

Flags:

TargetFrameName:

PostData:

Headers:

OtherWebBrowserparametersoftenbepassedwithNULL.

Example:

1、:

:

system("C:

\\WINDOWS\\SOL.EXE");

2、:

:

ShellExecute(0,NULL,

"C:

\\WINDOWS\\WINWORD.EXE",NULL,NULL,SW_SHOWMAXIMIZED);

3、m_MyBrowser.Navigate("",NULL,NULL,NULL,NULL);

【必做题目】《扫雷(或计算器)、QQ、浏览器三合一》

在对话框中加三个按钮:

“扫雷(或计算器)”、“QQ”和“IE浏览器”

1、点击“扫雷(或计算器)”,用system()函数进入扫雷游戏(或计算器),点击“QQ”,用ShellExecute()函数进入QQ。

2、点击“IE浏览器”,用WebBrowser控件的Navigate()函数进入浏览器。

【选做题目】《打印和打印预览问题》

在文档/视图模型中,打印和打印预览问题得到很好地解决,解放了编写大量打印代码的劳动。

在一个非文档/视图体系结构的应用软件中,如何将文档/视图模型中的打印代码分离出来,服务于此应用软件,使之也能实现打印和打印预览。

技能训练7:

文件操作

【讲解资料】

方法一:

用CFile、CStdioFile类

CFile成员函数有Open,Close,Read,Write等。

CFile的构造函数也可打开文件。

例子:

CFilefile;

charbuffer[1000];

file.Open("c.txt",CFile:

:

modeRead);

file.Read(buffer,80);

file.Close();

CStdioFile成员函数还有ReadString,WriteString。

方法二:

用文件输入输出流类ifstream和ofstream

要实现文件1到文件2的复制,先创建文件1的输入流对象和文件2的输出流对象,创建方法有两种:

open函数或构造函数。

然后分别使用输入流对象的get、getline或read函数、输出流的put或write函数。

例子:

#include

ifstreamfin;

charbuffer[100];

fin.open("t.txt",ios:

in);

do{

fin.getline(buffer,100);

}while(!

fin.eof());

flil.close();

【必做题目】《文件操作》

1、将文本文件Area.TXT拷贝到另一个文件NewArea.TXT中,并在每行前加上行号和冒号,两个文件名通过编辑框控件输入。

2、将二进制数据文件SimLi.FNT分割成若干个小文件,小文件的尺寸通过编辑框控件输入,小文件的名字分别取SimLi1.FNT,SimLi2.FNT,SimLi3.FNT,……。

上述两题要求一题用CFile类实现,另一题用流类实现。

【选做题目】《文件浏览》

类似于文件打开公用对话框的文件浏览器。

技能训练8:

数据库访问

【讲解资料】

数据库应用编程

【必做题目】《单文档视图的数据库应用程序》

用单文档/视图框架做一个数据库访问应用程序,具有记录的添加、删除、修改功能,界面上有添加、删除、修改、保存、返回等按钮或菜单项。

上述基本功能完成的基础上还可加索引、浏览等功能。

原始数据库的例子可以用Access数据库SampleDB.mdb。

【选做题目】《Access数据库的访问与DLL的结合》

做一个DLL,访问人力资源的Access数据库,其中的函数比如GetName(),GetBirthday(),MoveFirst(),MoveNext()以DLL导出函数的形式提供给访问者。

在DLL内部进行数据库和表的连接和断开,使访问者无须关心具体数据的存储名称、位置和格式。

技能训练9:

Web浏览器

【讲解资料】

编写一个简单的Web浏览器,除了利用“MicrosoftWeb浏览器”ActiveX控件外,还有基于CHtmlView的Doc/View框架的办法。

操作步骤是:

第一步:

在向导的第4步选“InternetExplorerReBars”,第6步的View的基类选CHtmlView。

第二步:

在视图类(CHtmlView的子类)的OnInitialUpdate()加

Navigate2(_T(""),NULL,NULL);

这样就能浏览新浪主页了,如果允许指定任意网页,继续下列

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2