本文介绍了在CDialog上添加CMFCToolBar对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在CDialog派生类上添加CMFCToolBar对象.
添加了工具栏,但是未启用工具栏上的按钮,因为应用程序无法找到其处理程序.尽管我在对话框类中提供了它们.
请参考下面的示例代码.
MyDlg.h文件
Hi,
I am trying to add CMFCToolBar object on CDialog derived class.
Toolbar got added, but button on the toolbar is not enabled, because application is not able to locate its handler. Though I have provided them in dialog class.
Please refer below sample code.
MyDlg.h File
class CMyDlg : public CDialog
{
...
CMFCToolBar m_ToolBar;
...
}
MyDlg.cpp文件
MyDlg.cpp File
void CMyDlg::CreateToolbar()
{
if( m_ToolBar.CreateEx(this, TBSTYLE_TRANSPARENT | TBSTYLE_FLAT,
AFX_DEFAULT_TOOLBAR_STYLE, CRect(1, 1, 1, 1), IDC_TOOLBAR) )
{
m_ToolBar.SetPaneStyle( m_ToolBar.GetPaneStyle()
& ~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_ANY) );
m_ToolBar.SetBorders ();
m_ToolBar.LoadBitmap(IDB_MAIN_CONTAINER_TOOLBAR);
m_ToolBar.InsertButton( CMFCToolBarButton(ID_MAIN_CONTAINER_TB_HOME, 0, _T("Home"), TRUE ) );
CSize sizeToolBar = m_ToolBar.CalcFixedLayout( FALSE, TRUE );
m_ToolBar.SetWindowPos(NULL, 0, 10, sizeToolBar.cx, sizeToolBar.cy,
SWP_NOACTIVATE | SWP_NOZORDER );
}
}
BOOL CMyDlg::OnInitDialog()
{
CreateToolbar();
return TRUE;
}
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_WM_SIZE()
ON_COMMAND(ID_MAIN_CONTAINER_TB_HOME, OnHome)
ON_UPDATE_COMMAND_UI(ID_MAIN_CONTAINER_TB_HOME, OnUpdateCmdUIToolbar)
END_MESSAGE_MAP()
void DFMDlgMainContainerNew::OnHome()
{}
void DFMDlgMainContainerNew::OnUpdateCmdUIToolbar(CCmdUI* pCmdUI)
{
pCmdUI->Enable();
}
非常感谢您的帮助.
谢谢,
Paresh.
Your help would be highly appreciated.
Thanks,
Paresh.
推荐答案
这篇关于在CDialog上添加CMFCToolBar对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!