工具栏 放在任意位置,且不能移动(如有分割条则不行)

下面代码可以让工具栏放在任意位置,且位置固定不变,不能移动(前提是没有分割条,否则点击分割条,

工具栏仍然能移动):
只需把工具栏部分(就是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的矩形区域.

你可能感兴趣的:(工具栏 放在任意位置,且不能移动(如有分割条则不行))