分享

自定义工具栏

 3D建模仿真 2012-09-13
第一种方法:
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)  


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多