VCMFC编程实例PPT资料.ppt

上传人:b****1 文档编号:14309924 上传时间:2022-10-22 格式:PPT 页数:138 大小:736KB
下载 相关 举报
VCMFC编程实例PPT资料.ppt_第1页
第1页 / 共138页
VCMFC编程实例PPT资料.ppt_第2页
第2页 / 共138页
VCMFC编程实例PPT资料.ppt_第3页
第3页 / 共138页
VCMFC编程实例PPT资料.ppt_第4页
第4页 / 共138页
VCMFC编程实例PPT资料.ppt_第5页
第5页 / 共138页
点击查看更多>>
下载资源
资源描述

VCMFC编程实例PPT资料.ppt

《VCMFC编程实例PPT资料.ppt》由会员分享,可在线阅读,更多相关《VCMFC编程实例PPT资料.ppt(138页珍藏版)》请在冰豆网上搜索。

VCMFC编程实例PPT资料.ppt

,#include#defineMAX_BUBBLE250classCMyWnd:

publicCFrameWndCRectm_rectBubbleMAX_BUBBLE;

intm_nBubbleCount;

public:

CMyWnd()m_nBubbleCount=0;

protected:

afx_msgvoidOnLButtonDown(UINTnFlags,CPointpoint);

afx_msgvoidOnPaint();

DECLARE_MESSAGE_MAP();

/消息映射BEGIN_MESSAGE_MAP(CMyWnd,CFrameWnd)ON_WM_LBUTTONDOWN()ON_WM_PAINT()END_MESSAGE_MAP(),/框架窗口类的成员函数voidCMyWnd:

OnLButtonDown(UINTnFlags,CPointpoint)if(m_nBubbleCountMAX_BUBBLE)intr=rand()%50+10;

CRectrect(point.x-r,point.y-r,point.x+r,point.y+r);

m_rectBubblem_nBubbleCount=rect;

m_nBubbleCount+;

InvalidateRect(rect,FALSE);

voidCMyWnd:

OnPaint()CPaintDCdc(this);

CBrushbrushNew;

CPenpenNew;

brushNew.CreateSolidBrush(RGB(rand()%255,rand()%255,rand()%255);

penNew.CreatePen(PS_SOLID,1,RGB(255,0,0);

dc.SelectObject(,for(inti=0;

im_nBubbleCount;

i+)dc.Ellipse(m_rectBubblei);

/应用程序类classCMyApp:

publicCWinApppublic:

BOOLInitInstance();

BOOLCMyApp:

InitInstance(),CMyWnd*pFrame=newCMyWnd;

pFrame-Create(0,_T(吹彩色泡泡);

pFrame-ShowWindow(m_nCmdShow);

this-m_pMainWnd=pFrame;

returnTRUE;

CMyAppThisApp;

/全局应用程序对象按【Ctrl+F5】运行程序,运行结果如图10-2所示。

说明:

该程序声明了两个类,一个是由应用程序类CwinApp派生出来的CmyApp类,一个是由框架窗口CframeWnd类派生出来的CmyWnd类。

MFC的基本类名均以字母C打头,习惯上在为使用MFC编写的应用程序中的类起名时也这样做。

在程序中还声明了一个CmyWnd类的全局对象ThisApp。

图10-2,在CmyWnd类中声明了一个数组成员m_rectBubble,用于存放泡泡的数据;

另外,还声明了一个整型数据成员m_nBubbleCount,用来存放数组中泡泡的实际数量。

在框架窗口类的构造函数中该成员变量被初始化为0,由于构造函数非常简单,因此使用了内联函数的形式。

OnPaint()函数用于绘制客户区的内容。

要完成这项任各,需要先建立一个设备环境(DeviceContext),这可以通过声明一个CpaintDC类的对象dc实现。

在声明语句中,应将当前窗口对象指针this传给CpaintDC类的构造函数,把绘图区域确定为当前窗口的客户区。

Windows在窗口更新、移动、改变尺寸或移去覆盖在其上的其它窗口对象时均会向该窗口发送WM_PAINT消息,从而触发应用程序调用OnPaint()函数重绘窗口客户区。

OnPaint()函数根据数组m_rectBubble的内容画出一个泡泡。

其中语句。

dc.SelectStockObject(LTGRAY_BRUSH);

用于选择一个库存画刷,画刷决定了所画图形(如椭圆、矩形和多边形等)内部的颜色。

在处理鼠标消息的ONLButtonDown()函数中,语句intr=rand()%50+10;

随机确定了要画出的泡泡的半径(范围为1050像素点),其中全局函数rand()可产生一个随机整数。

调试:

首先,使用VisualC+集成开发环境中的菜单选项“文件/新建”,并在项目选项卡中选择“Win32Application。

其次,在编译时要确定应用程序的可执行程序如何使用MFC的类库。

一种方法是使用共享的动态链接库(DLL)。

这种链接方式显著地减小了应用程序的可执行文件的大小,并能有效地利用系统资源。

用系统资源。

然而,动态链接到MFC时要求提供Mfcnn.dll库文件,文件名中的nn代表MFC的版本号。

该文件通常在WindowsSystem或System32文件夹下。

如果一个应用程序动态链接到了MFC,但该应用程序通常用在那些可能没有Mfcnn.dll库的计算机系统上,则应把这个库文件作为应用程序包的一部分提供给用户。

Microsoft允许程序员自由地把这些库文件附在应用程序中。

另外,也可以选择应用程序静态链接到MFC。

静态链接意味着,应用程序不依赖于MFC库文件的存在(但仍然可能需要Msvcrt.dll文件)。

静态链接的代价是可执行文件更大,而且MFC内存的利用可能不够充分。

在菜单中选择“工程”中的“设置”对话框,在对话框右方的“General”选项卡中通过组合框“MicrosoftFoundationClasses”选择使用MFC类库的方法。

可选项有三种,分别为“NotUsingMFC(不使用MFC),UseMFCinaSharedDLL(以动态链接库方式使用MFC)”和“UseMFCinaStaticLibrary(以静态库方式使用MFC)”。

10.2常用FC类和消息处理,10.2.1常用MFC类MFC的类构成了一个完整的体系,该体系由一个被称为Cobject的类作为基类,其它类大部分由该类派生而来,如CWnd(窗口类)、Cdocument(文档类)、Cfile(文件类)等。

也有一部分类如字符串类,Cstring和时间类Ctime等则不从Cobject继承。

1.窗口公共基类CWnd类CWnd对所有Windows窗口提供功能支持,它是所有窗口类的直接或间接父类。

一个CWnd对象和一个Windows窗口是有本质区别的,尽管它们有密切的联系。

CWnd对象是一个概念,即类的实例,而Windows窗口则是指向Windows内部数据结构的一个句柄,它的创建和显示要消耗系统资源。

一个CWnd对象通过其构造函数被创建,被析构函数销毁,而一个Windows窗口则通过CWnd的Create函数创建,被DestroyWindow函数销毁。

1)窗口句柄

(1)窗口句柄的创建:

当CWnd:

Create被调用时,Windows窗口被创建,窗口句柄存放在CWnd的成员变量m_hWnd中。

(2)程序中窗口句柄的取得:

可以直接利用成员变量m_hWnd,但安全的方法是调用函数CWnd:

Get(),它返回与窗口对象相关联的句柄,并且当窗口对象没有关联句柄时或当前CWnd指针为NULL时返回空指针。

(3)窗口句柄的销毁:

调用CWnd:

DestroyWindow。

2)窗口的大小和位置

(1)IsIconic:

窗口是否处在最小化状态。

(2)IsZoomed:

判断窗口是否在最大化状态。

(3)MoveWindow:

改变窗口的大小、位置和Z轴顺序。

Z轴顺序指本窗口和其他窗口的覆盖关系。

3)窗口的状态

(1)ShowWindow:

显示或隐藏一个窗口,显示可以有多种方式:

最大化、最小化、正常显示等。

(2)IsWindowEnabled:

判断一个窗口是否可见。

(3)IsWindowEnabled:

判断窗口的禁止/使能状态,禁止状态的窗口不能响应用户的键盘和鼠标的输入。

(4)EnableWindow:

设置窗口的禁止/使能状态,参数为true表示使能。

4)定时器函数

(1)SetTimer:

开始一个系统定时器。

定时器的作用是每隔指定时间发一次WM_TIMER消息。

(2)KillTimer:

结束一个指定的系统定时器。

5)提示函数

(1)FlashWindow:

闪烁窗口。

(2)MessageBox:

弹出一个标准消息框。

例如:

开始一个系统定时器每0.5秒发一次WM_TIMER消息,代码为:

SetTimer(1,500,NULL):

其中,第一个参数表示定时器的标识,第二个参数表示发送WM_TIMER的间隔时间,第三个参数是一个回调函数,一般设为NULL。

可以在WM_TIMER消息的处理函数OnTimer(通过ClassWizard添加)中加入处理代码来响应定时器消息。

结束定时器的方法是调用以定时器标识为参数的函数KillTimer,比如:

KillTimer

(1);

2字符串类CStringCstring类是MFC对字符串的封装,它包含一个可变长的字符序列,提供了很多串操作,使用它比使用其它字符串类型更加方便。

可以说,几乎每个MFC程序都要用到这个类。

CString没有继承任何类,且其各个字符都是TCHAR类型。

CString对象可以随着串合并操作动态增加其长度,而无须用户来对其长度进行专门设置。

CString可以看作一个串类型,而不是一个指向字符串的指针。

1)CString的构造函数CString类拥有众多的构造函数,用于以不同的数据类型和不同的方式构造一个字符串对象,它们是

(1)CString();

/无参数的构造函数,产生一个空的Cstring对象

(2)CString(constCstring/用一个字符重复若干次来初始化对象,(4)CString(LPCTSTRlpch,intnLength);

/用一个字符数组和一定长度初始化对象(5)CString(constunsignedchar*psz);

/从一个无符号字符指针构造对象例如:

CStrings1;

CStrings2(big);

CStrings3=s2;

CStrings4(s2+s3);

2)CString的基本操作Cstring的基本操作如下:

(1)求得到字符串长度:

GetLength返回一个int类型的数。

(2)判断字符串是否为空:

BOOLIsEmpth()const。

(3)强制字符串长度为0:

voidEmpty()。

(4)得到字符串某位置的字符:

TCHARGetAt(intnIndex)const

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

当前位置:首页 > 考试认证 > IT认证

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

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