第四章、简单绘图

4.1MFC消息映射机制

为CMainFrame类添加WM_LBUTTONDOWN消息响应函数,在该消息相应函数的内部调用MessageBox函数,这里的MessageBox函数与SDK里的不同,少了窗口句柄的函数。因为CWnd类有成员变量m_hWnd,用来保存当前窗口句柄,CMainFrame类继承与CWnd类,同样地也继承了该成员变量。

void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point) 
{
  // TODO: Add your message handler code here and/or call default
  MessageBox("MainFrame Clicked!");

CFrameWnd::OnLButtonDown(nFlags, point);
 }

但是运行程序后并没有出现相应的消息框。

给CView类添加消息响应函数:
换另一种方法,打开View菜单,选择ClassWizard。
Message Maps:添加或者删除消息处理函数、成员函数,或者类。
Add Function->Edit Code

在这里插入图片描述
在这里插入图片描述
删除消息响应函数,直接在该函数鼠标右键,选择Delete

4.1.1消息映射机制

增加一个消息响应函数之后,在源文件处都会增加三处代码。
消息响应函数的原型:
TestView.h中,

// Generated message map functions
protected:
 //{{AFX_MSG(CTestView)
 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
 //}}AFX_MSG
 DECLARE_MESSAGE_MAP()
};

afx_msg注释宏,该宏表示一个消息响应函数的声明。

ON_WM_LBUTTONDOWN消息映射宏:
TestView.cpp文件中,

BEGIN_MESSAGE_MAP(CTestView, CView)
 //{{AFX_MSG_MAP(CTestView)
 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()

将WM_LBUTTONDOWN消息与消息响应函数关联起来。

消息响应函数的定义:
在TestView.cpp文件中,

// CTestView message handlers
void CTestView::OnLButtonDown(UINT nFlags, CPoint point) 
{
 // TODO: Add your message handler code here and/or call default
 MessageBox("View Clicked!");
 CView::OnLButtonDown(nFlags, point);
}

先找消息响应函数的声明,然后找消息映射宏,最后找消息处理函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

身影王座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值