下面代码可以让工具栏放在任意位置,且位置固定不变,不能移动(前提是没有分割条,否则点击分割条,
工具栏仍然能移动):
只需把工具栏部分(就是m_wndToolBar.m_pDockBar的矩形区域)裁剪出来即可:
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME) )
{
TRACE0("未能创建工具栏/n");
return -1; // 未能创建
}
m_wndToolBar.EnableDocking( CBRS_NOALIGN );//不准停靠
EnableDocking(CBRS_ALIGN_ANY );
//浮动工具栏
CPoint pt( 500, 500);//浮动工具栏的起点
FloatControlBar( &m_wndToolBar, pt);
CRgn wndrgn;
CRect wrect, rcTlbDlg;
CWnd* pToolBarDlg;//工具栏的父窗口(对话框)
pToolBarDlg= ( CWnd* ) (m_wndToolBar.m_pDockBar);//获取m_pDockBar
pToolBarDlg->GetWindowRect (&wrect);//获取m_pDockBar的矩形
pToolBarDlg= pToolBarDlg->GetParent();
if( pToolBarDlg->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd)))
{
pToolBarDlg->GetWindowRect (&rcTlbDlg); //获取工具栏所在对话框的矩形
wndrgn.CreateRectRgn( wrect.left - rcTlbDlg.left, wrect.top- rcTlbDlg.top
,
wrect.right- rcTlbDlg.left, wrect.bottom -
rcTlbDlg.top);//坐标是相对于对话框窗口的
pToolBarDlg->SetWindowRgn((HRGN)wndrgn,true);//注意,一定要是对话框
pToolBarDlg设置裁剪区域
}
=============================================
注意:工具栏没有去掉菜单栏,只是裁剪出其中工具栏的部分,而工具栏的部分就是
m_wndToolBar.m_pDockBar的矩形区域.