第一种方法:
1、在资源中添加工具条;
2、加载工具条
if (! m_tool.CreateEx( this,TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,
CRect(2,2,0,0)) || ! m_tool.LoadToolBar(IDR_TOOLBAR_MYBUTTON) )
{
TRACE0("failed to create toolbar\n");
return FALSE;
}
m_tool.ShowWindow(SW_SHOW);
3、
WM_KICKIDLE这个是MFC中对于空闲处理的一个未公开的消息.
该消息似乎只针对模态对话框的.
ON_MESSAGE(WM_KICKIDLE, OnKickIdle)
E:\Projects\split screen\split screen\split screenDlg.cpp(287):LRESULT CsplitscreenDlg::OnKickIdle(WPARAM, LPARAM)
E:\Projects\split screen\split screen\split screenDlg.h(41): afx_msg LRESULT OnKickIdle(WPARAM, LPARAM);
LRESULT CsplitscreenDlg::OnKickIdle(WPARAM, LPARAM)
{
CCmdUI cmdUI;
cmdUI.m_nID = ID_TOOL_BUTTON;
cmdUI.DoUpdate(this, FALSE);
cmdUI.m_nID = ID_BUTTON_CLOSE;
cmdUI.DoUpdate(this, FALSE);
return TRUE;
}
4、响应工具栏按钮事件
ON_BN_CLICKED(ID_TOOL_BUTTON, OnBnClicked)
第二种方法:
1、添加工具栏对象
// 工具栏
CToolBar m_toolbar;
// 图像列表控件
CImageList m_ImageList;
2、// 设置工具栏信息
// 动态设置工具栏按钮图标
m_ImageList.Create(16,16,ILC_COLOR32|ILC_MASK,1,1);
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_MANAGE));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_UPDATE));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_SECURITY));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_SET));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_QUIT));
UINT btnarray[5]={0};
for (int i=0;i<5;i++)
{
btnarray[i]=3000+i;
}
m_toolbar.Create(this);
m_toolbar.SetButtons(btnarray,5);
m_toolbar.SetButtonText(0,_T("管理"));
m_toolbar.SetButtonInfo(0,ID_MANAGE,TBSTYLE_BUTTON,0);
m_toolbar.SetButtonText(1,_T("更新"));
m_toolbar.SetButtonInfo(1,ID_UPDATE_MANAGE,TBSTYLE_BUTTON,1);
m_toolbar.SetButtonText(2,_T("安全"));
m_toolbar.SetButtonInfo(2,ID_SECURITY,TBSTYLE_BUTTON,2);
m_toolbar.SetButtonText(3,_T("设置"));
m_toolbar.SetButtonInfo(3,ID_SET,TBSTYLE_BUTTON,3);
m_toolbar.SetButtonText(4,_T("退出"));
m_toolbar.SetButtonInfo(4,ID_QUIT,TBSTYLE_BUTTON,4);
// 设置工具条大小信息
m_toolbar.GetToolBarCtrl().SetButtonWidth(32,32);
m_toolbar.GetToolBarCtrl().SetImageList(&m_ImageList);
m_toolbar.SetSizes(CSize(32,32),CSize(16,16));
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
3、响应事件
ON_BN_CLICKED(ID_MANAGE,&CsplitscreenDlg::OnBnClickedManage)