MFC消息映射机制

MFC消息映射机制

消息映射是一个将消息和成员函数关联起来的表。如果架构窗口接收到了一个消息,MFC会对其消息映射进行搜寻,如果找到消息映射的对应函数,则执行该函数。
要创建消息映射首先要在头文件的架构窗口类中声明消息映射宏:

class MyFrame:public CFrameWnd
{
public:
MyFrame();
DECLARE_MESSAGE_MAP()//消息映射宏
}

声明完成后在源文件中添加消息映射的开始与结束宏,开始与结束宏之间添加需要处理的消息的宏。

BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd)//开始宏

ON_WM_LBUTTONDOWN()//鼠标左键按下的消息处理函数

ON_WM_CHAR()//从键盘输入

ON_WM_PAINT()//画画

END_MESSAGE_MAP()//结束宏

这部分代码要写在函数外面。
上述代码写完后,要在头文件中声明要处理消息的函数原型,并在源文件中写下相应的函数。
要处理消息的函数原型声明:


class MyFrame :public CFrameWnd
{
public:

	MyFrame();
	//声明消息映射宏
	DECLARE_MESSAGE_MAP()

	afx_msg void OnLButtonDown(UINT, CPoint);//鼠标左键按下的函数声明

	afx_msg void OnChar(UINT, UINT, UINT);//键盘输入的函数声明

	afx_msg void OnPaint();//画画
};

相应函数的内容:

void MyFrame::OnLButtonDown(UINT, CPoint point)
{
	TCHAR buf[1024];
	wsprintf(buf, TEXT("x = %d,y = %d"), point.x, point.y);
	MessageBox(buf);
}

void MyFrame::OnChar(UINT key, UINT, UINT)
{
	CString str;
	str.Format(TEXT("你按下了%c键"), key);
	MessageBox(str);
}

void MyFrame::OnPaint()
{
	CPaintDC dc(this);
	dc.TextOut(100,100,TEXT("自作聪明"));
	dc.Ellipse(10, 15, 150, 125);
}

OnLButtonDown:点击鼠标左键,将点击位置以对话框的形式弹出。
OnChar:从键盘接收一个输入,将输入的字符以对话框的形式显示。
OnPaint:画图操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值