CMFCToolBar添加工具栏按钮的功能实现
一、button函数的声明
- 上一篇说到,工具栏定义到需要调用的dialog中,所以,函数的声明与定义也必然要在对应的dialog中,声明放在.h中,具体代码如下:
public:
afx_msg void OnToolBarButtonback();
afx_msg void OnToolBarButtonforw();
afx_msg void OnToolBarButtonsave();
afx_msg void OnToolBarButtonallsave();
afx_msg void OnToolBarButtonstart();
afx_msg void OnToolBarButtononline();
afx_msg void OnToolBarButtonstop();
二、button函数的定义与实现
- 因为每个人对于这个按钮的功能需求是不一样的,所以,我就简单实现成弹框吧,方便验证和调试。
void CXlCANcontrolDlg::OnToolBarButtonback()
{
AfxMessageBox(_T("您按了打开 OnToolBarButtonback"));
}
void CXlCANcontrolDlg::OnToolBarButtonforw()
{
AfxMessageBox(_T("您按了打开 OnToolBarButtonforw"));
}
void CXlCANcontrolDlg::OnToolBarButtonsave()
{
AfxMessageBox(_T("您按了打开 OnToolBarButtonsave"));
}
void CXlCANcontrolDlg::OnToolBarButtonallsave()
{
AfxMessageBox(_T("您按了打开 OnToolBarButtonallsave"));
}
void CXlCANcontrolDlg::OnToolBarButtonstart()
{
AfxMessageBox(_T("您按了打开 OnToolBarButtonstart"));
}
void CXlCANcontrolDlg::OnToolBarButtononline()
{
AfxMessageBox(_T("您按了打开 OnToolBarButtononline"));
}
void CXlCANcontrolDlg::OnToolBarButtonstop()
{
AfxMessageBox(_T("您按了打开 OnToolBarButtonstop"));
}
三、处理button按钮的消息映射
- 每个要触发的按钮都必须有映射,这样才能正常触发。
ON_COMMAND(ID_BUTTONback, &CXlCANcontrolDlg::OnToolBarButtonback)
ON_COMMAND(ID_BUTTONforw, &CXlCANcontrolDlg::OnToolBarButtonforw)
ON_COMMAND(ID_BUTTONsave, &CXlCANcontrolDlg::OnToolBarButtonsave)
ON_COMMAND(ID_BUTTONallsave, &CXlCANcontrolDlg::OnToolBarButtonallsave)
ON_COMMAND(ID_BUTTONstart, &CXlCANcontrolDlg::OnToolBarButtonstart)
ON_COMMAND(ID_BUTTONonline, &CXlCANcontrolDlg::OnToolBarButtononline)
ON_COMMAND(ID_BUTTONstop, &CXlCANcontrolDlg::OnToolBarButtonstop)
- 值得注意的是,
ON_COMMAND(ID_BUTTONstop, &CXlCANcontrolDlg::OnToolBarButtonstop)
中ID_BUTTONstop
是对应工具栏的button的ID,我这里是自己修改后的ID,我们在画按钮时可以根据自己的情况修改,这样方便别人能够准确的读懂代码。 - 新手可能不知道ID在哪儿,见下图吧,顺便修改方法也见下图吧。
- 修改就直接点击ID后面的框进行修改就OK了。
四、运行界面
好了整个工具栏就这么完成了,这是最简易的版本,很多人还有继承CMFCToolBar自己实现的类,那个就算是高级版了,我只是简单运用一下,就不深究了。