C++Word格式.docx

上传人:b****6 文档编号:15908141 上传时间:2022-11-17 格式:DOCX 页数:48 大小:516.65KB
下载 相关 举报
C++Word格式.docx_第1页
第1页 / 共48页
C++Word格式.docx_第2页
第2页 / 共48页
C++Word格式.docx_第3页
第3页 / 共48页
C++Word格式.docx_第4页
第4页 / 共48页
C++Word格式.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

C++Word格式.docx

《C++Word格式.docx》由会员分享,可在线阅读,更多相关《C++Word格式.docx(48页珍藏版)》请在冰豆网上搜索。

C++Word格式.docx

函数的参数类型、参数个数不同,才能构成函数的重载。

分析以下两种情况,是否构成函数的重载。

第一种情况:

(1)voidoutput();

(2)intoutput();

只有返回值不同的两个函数不能构成函数重载

第二种情况:

(1)voidoutput(inta,intb=5);

(2)voidoutput(inta);

带缺省参数的两个函数也不能构成函数重载

this指针

1、this指针是一个隐含的指针,它是指向对象本身,代表了对象的地址

2、一个类所有的对象调用的成员函数都是同一代码段。

那么成员函数又是怎么识别属于同一对象的数据成员呢?

原来,在对象调用pt.output(10,10)时,成员函数除了接受2个实参外,还接受到了一个对象s的地址。

这个地址被一个隐含的形参this指针所获取,它等同于执行this=&

pt。

所有对数据成员的访问都隐含地被加上前缀this->

例如:

x=0;

等价于this->

x=0。

类的继承

在C++中,给我们提供了一种重要的机制,就是继承。

classFish:

publicAnimal鱼从动物类继承而来

如果基类的构造函数有参数,则在派生类中使用Fish():

Animal(300,400)语句传递参数

类的继承访问特性

基类的访问特性

类的继承特性

子类的访问特性

Public

Protected

Private

No 

access

函数的覆盖

函数的覆盖是发生在父类与子类之间的。

通常定义类的时候,把函数原型的声明和定义放到头文件中,把类中函数的实现放到源文件中。

文本框编程

1、创建插入符,利用CreatSolidCaret()函数完成

voidCreatSolidCaret(IntnWidth,IntnHeight)第一个参数是指定插入符的宽度,第二个参数指定插入符的高度。

初始化插入符是隐藏的,需要显示则使用ShowCaret()函数。

需要在视类中添加OnCrate消息响应

CreateSolidCaret(21,100);

ShowCaret();

2、根据设备描述表中字体的大小来创建插入符,利用GetTextMetrics()函数完成

BOOLGetTextMetrics(LPTEXTMETRIClpMetrics)const;

CClientDC从CDC派生而来,它创建对象的时候会调用构造函数,从而隐式调用GetDC();

当对象生命周期结束时,他会调用析构函数,从而调用RelaseDC()来释放DC。

CClientDCdc(this);

TEXTMETRICtm;

//定义一个结构体变量

dc.GetTextMetrics(&

tm);

CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);

ShowCaret();

3、创建图形插入符,利用CreatCaret()函数完成

需要将bitmap设置成View的成员变量

Private:

CBitmapbitmap;

TEXTMETRICtm;

bitmap.LoadBitmap(IDB_BITMAP1);

CreateCaret(&

bitmap);

4、OnDraw()函数,当窗口发生重绘时(窗口尺寸发生改变),会被应用程序框架调用,将一直保存在窗口上

CString类:

可以直接把CString对象直接赋值

//CStringstr("

北京维新科学技术培训中心"

);

//这是一种赋值方法

//下面两行也是赋值方法,与上面的赋值方法等价

CStringstr;

str="

;

pDC->

TextOut(50,50,str);

LoadString可以装载一个字符串资源,我们只要何时用到CString对象再去调用LoadString加载一个字符串资源,就不需要每次都进行赋值了。

str.LoadString(IDS_WEIXIN);

TextOut(0,100,str);

5、路径程(如果需要窗口某部分与窗口其他部分不一样,就可以用路径程来实现)

以下代码还是在OnDraw函数中完成

CSizesz=pDC->

GetTextExtent(str);

pDC->

BeginPath()打开一个路径程

Rectangle(50,50,50+sz.cx,50+sz.cy);

EndPath()关闭一个路径程

①获取一个字符串在屏幕上显示的宽度和高度,利用GetTextExtent()函数完成

CSizeGetTextExtent(constCString&

str)const;

CSize和SIZE结构体一样

SIZE结构体中有两个成员变量,分别表示宽度和高度

typedefstructtagSIZE{LONGcx;

LONGcy;

}SIZE,*PSIZE;

GetTextMetrics()函数是获取当前字体信息的度量,关于字体本身信息的度量;

而GetTextExtent()函数是获取一个特定的字符串在屏幕上显示的时候所占据的宽度和高度。

②画网格

for(inti=0;

i<

300;

i+=10)

{

pDC->

MoveTo(0,i);

LineTo(300,i);

MoveTo(i,0);

LineTo(i,300);

}

6、捕获键盘按下的消息

思想:

我们可以将每次输入的字符都存储到一个字符串中,每次输出的时候都是从原点输出。

首先增加WM_CHAR消息,然后增加成员变量m_strLine,初始化为NULL。

再增加一个WM_LBUTTONDOWN消息。

m_strLine.Empty();

//将CString对象清空

再增加一个类型为CPoint的成员变量m_ptOrigin,并初始化为0

m_ptOrigin=point;

获取背景色,利用GetBkColor

设置文本颜色,利用SetTextColor。

返回值是COLORREF类型

移动插入符,利用SetCaretPos()函数实现。

BOOLSetCaretPos(intX,intY);

SetCaretPos(point);

//设置插入符的位置

voidCTextView:

:

OnChar(UINTnChar,UINTnRepCnt,UINTnFlags)

{

CClientDCdc(this);

CFontfont;

/*CFont*pOldFont=*/font.CreatePointFont(500,"

华文行楷"

NULL);

dc.SelectObject(&

font);

if(0X0D==nChar)//回车

m_strLine.Empty();

m_ptOrigin.y+=tm.tmHeight;

elseif(0X08==nChar)//退格

COLORREFclr=dc.SetTextColor(dc.GetBkColor());

//将文本颜色设置成背景色

dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);

//输出

m_strLine=m_strLine.Left(m_strLine.GetLength()-1);

dc.SetTextColor(clr);

else

m_strLine+=nChar;

/*插入符随输入的往后移动*/

CSizesz=dc.GetTextExtent(m_strLine);

CPointpt;

pt.x=m_ptOrigin.x+sz.cx;

pt.y=m_ptOrigin.y;

SetCaretPos(pt);

dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);

//dc.SelectObject(pOldFont);

CView:

OnChar(nChar,nRepCnt,nFlags);

}

模仿KTV的字幕,使字体平滑变色

intDrawText(constCString&

str,LPRECTlpRect,UINTnFormat);

首先增加在OnCreate函数中增加定时器

SetTimer(1,100,NULL);

然后增加消息处理WM_TIMER

m_nWidth+=5;

CRectrect;

rect.left=0;

rect.top=200;

rect.right=m_nWidth;

rect.bottom=rect.top+tm.tmHeight;

dc.SetTextColor(RGB(255,0,0));

CStringstr;

str.LoadString(IDS_WEIXIN);

dc.DrawText(str,rect,DT_LEFT);

rect.top=150;

rect.bottom=rect.top

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

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1