MFC程序中,资源编辑器,工具栏,添加一个自定义的按钮(Button)。由于此时没有为该按钮添加消息映射响应函数,按钮为灰色。下边我们介绍两种添加消息响应函数的方法:
假设工具栏自定义按钮 ID为ID_TB_VIEW_ROTATE,所在工程名称为MyTest.
第一种方法:(没有对应的“菜单” 按钮及响应函数,需要手动编写)
1.1
视图类头文件 CMyTestView.h 中,添加消息响应函数声明:
afx_msg void OnTBViewRotate();
1.2
视图类源文件 CMyTestView.cpp中,添加消息响应函数的映射:
BEGIN_MESSAGE_MAP(CHOOPSMol_MULView, CHoopsView)
ON_COMMAND(ID_VIEW_Rotate, OnOrbit)
ON_COMMAND(ID_VIEW_TRANSLATE, OnPan)
ON_COMMAND(ID_VIEW_ZOOM, OnZoom)
.....
ON_COMMAND(ID_TBB_VIEW_ROTATE, OnTBBViewROTATE());
END_MESSAGE_MAP()
1.3
视图类源文件 CMyTestView.cpp中,添加消息响应函数的定义:
void CMyTestView::OnTBBViewROTATE()
{
// TODO: 在此添加专用代码添加实现代码
int value;
....
}
Over, 工具栏自定义 按钮 添加完毕。
第二种方法:(工具栏自定义按钮,有对应的“菜单”按钮,及其对应的消息映射函数)
这种就比较简单了,直接在工程视图类源文件中修改:
在CMyTestView.cpp中,将工具栏自定义按钮,映射到其对应的“菜单”按钮消息响应函数上,代码如下:
BEGIN_MESSAGE_MAP(CHOOPSMol_MULView, CHoopsView)
ON_COMMAND(ID_VIEW_Rotate, OnOrbit) //对应到菜单ID_VIEW_Rotae对应的消息响应函数 OnOrbit()
ON_COMMAND(ID_VIEW_TRANSLATE, OnPan)
ON_COMMAND(ID_VIEW_ZOOM, OnZoom)
.....
//工具栏自定义按钮,对应到菜单ID_VIEW_Rotae对应的消息响应函数 OnOrbit()
ON_COMMAND(ID_TBB_VIEW_ROTATE, OnOrbit)
END_MESSAGE_MAP()
over,工具栏自定义按钮,消息响应函数添加完成。