第一范文网 - 专业文章范例文档资料分享平台

《C--面向对象程序设计》实验指导书(彭成)word版本

来源:用户分享 时间:2025/5/22 10:36:32 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

精品文档

实验八 消息处理

一、实验目的

1、 掌握MFC中消息映射的机制; 2、 学习手动添加消息映射函数的方法。 二、实验内容

1、在单文档应用程序中添加鼠标左键消息处理函数,实现在视图中绘制椭圆

消息映射简单说明:当用户在视图窗口中按下鼠标左键时,Windows发送一个消息,即WM_LBUTTONDOW消息到这个窗口。如果程序需要对WM_LBUTTONDOW做出响应,视图类必须有一个类似如下的成员函数:

void Cex6View::OnLButtonDown(UINT nFlags, CPoint point) {

// TODO: Add your message handler code here and/or call default }

在类头文件中,也必须有相应的原型说明:

afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

afx_msg标志是一个“非运算符”,警告这是消息映射函数的原型。然后在代码文件中,还需要一个消息映射宏,把OnLButtonDown函数连接到应用程序框架上。

BEGIN_MESSAGE_MAP(CEx4View, CView) //{{AFX_MSG_MAP(CEx4View) ON_WM_LBUTTONDOWN() //}}AFX_MSG_MAP END_MESSAGE_MAP()

收集于网络,如有侵权请联系管理员删除

精品文档

最后在类的头文件中需要使用如下语句: DECLARE_MESSAGE_MAP()

以上代码都可以用Visual C++提供的ClassWizard工具,它自动对大多数消息生成响应函数,并在相应位置添加如上所示的代码。

具体步骤如下:

1、使用AppWizard生成名为Ex6的SDI工程。

2、添加m_rectEllipse和m_nColor数据成员到CEx4View:把Workspace窗口设置为ClassWizard,右击Cex6View,选定Add Member Variable,然后插入如下两个数据成员:

Private:

Crect m_rectEllipse; Int m_nColor;

3、 使用ClassWizard添加Cex6View类消息处理程序:按下Ctrl+W,出现MFC

ClassWizard对话框时,确保选定CEx4View类,如下图所示。现在,在Object IDs列表框的顶部单击Cex6View,然后,在消息列表框中滚动虚函数,并双击WM_LBUTTONDOWN。OnLButttonDown函数名应当出现在

收集于网络,如有侵权请联系管理员删除

精品文档

Member Functions列表框内部。

图6-1 MFC ClassWizard 窗口

确定后,在Ex6View.cpp和Ex6View.h以下位置就会添加加黑的代码:

//Ex6View.h protected:

//{{AFX_MSG(Cex6View)

afx_msg void OnLButtonDown(UINT nFlags, CPoint point); //}}AFX_MSG

DECLARE_MESSAGE_MAP() //Ex4View.cpp

BEGIN_MESSAGE_MAP(Cex6View, CView) //{{AFX_MSG_MAP(Cex6View) ON_WM_LBUTTONDOWN() //}}AFX_MSG_MAP

// Standard printing commands

ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP()

void Cex6View::OnLButtonDown(UINT nFlags, CPoint point) {

收集于网络,如有侵权请联系管理员删除

精品文档

}

4、在Ex6View.cpp中编辑OnLButttonDown代码,如下: void Cex6View::OnLButtonDown(UINT nFlags, CPoint point) {

// TODO: Add your message handler code here and/or call default

if(m_rectEllipse.PtInRect(point)){ if(m_nColor==GRAY_BRUSH) {

m_nColor=WHITE_BRUSH; } else{

m_nColor=GRAY_BRUSH; }

InvalidateRect(m_rectEllipse); } }

5、在Ex6View.cpp中编辑构造函数和OnDraw函数,如下: Cex6View::Cex6View():m_rectEllipse(0,0,200,200) {

m_nColor=GRAY_BRUSH; }.

void Cex6View::OnDraw(CDC* pDC) {

pDC->SelectStockObject(m_nColor); pDC->Ellipse(m_rectEllipse); }

6、建立并运行程序。

2、在对话框中添加自定义消息函数,实现动态按钮。

步骤如下: 1) 2)

建立一个基于对话框的MFC工程. 在对话框中添加动态按钮。

(1) 建立控件ID号:

ID号是控件的标识,创建控件前必须先为它设置一个ID号。打开资源中的“String Table”,在空白行上双击鼠标,这时会弹出一个ID属性对话框,在其中的ID编辑框中输入ID,如:IDC_MYBUTTON,在Caption中输

收集于网络,如有侵权请联系管理员删除

《C--面向对象程序设计》实验指导书(彭成)word版本.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1dyth4ga3y2p7v43zg0p6rgfk15t3500h90_7.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top