关于CFormView的滚动条和凹凸解决

有一些问题:   
  1   如何去掉CFormView的滚动条?   
  2   如何使CFormView和CSplitterWnd相平,即CFormView不是凹下去的视觉   
  3   如何设置CSplitterWnd两边窗口的最小宽度,即不会被CSplitterWnd拖到为0   
  4   能否在CSplitterWnd边加上CToolBar   
    
 1:选择FormView的对话框   属性去掉水平和竖直滚动条属性,如果还不行加如下代码:   
  void   CXXXX::OnInitialUpdate()     
  { CFormView::OnInitialUpdate();   
    
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class   
  m_nMapMode   =   -1;   
  }   
  2:我想只能重载Splitter类了,然后再OnDrawSplitter里修改如下(已验证);   
  该代码的功能是让Splitter不画3D效果,也就是外边框和中间填充一个颜色,现在画灰色   
  void   CMySplitter::OnDrawSplitter(CDC   *pDC,   ESplitType   nType,   const   CRect   &rectArg)   
  {   
  if   (pDC   ==   NULL)   
  {   
                    RedrawWindow(rectArg,   NULL,   RDW_INVALIDATE|RDW_NOCHILDREN);   
  return;   
  }   
  ASSERT_VALID(pDC);   
    
  //   otherwise,   actually   draw   
                    COLORREF   clrGray   =   RGB(   204,   204,   204   );   
  if(nType   ==   splitBorder)   
  {   
  pDC->Draw3dRect(rectArg,   clrGray   ,   clrGray     );   
  rect.DeflateRect(1,   1);   
  pDC->Draw3dRect(   rectArg,   clrGray   ,   clrGray   );   
  return;   
  }   
                  pDC->FillSolidRect(   rectArg,   clrGray   );       
    
  }   
    
  3:比较简单的办法就是重载splitter的OnMouseMove函数,比如你想设定该竖直分割条最左不得小于20象素   
  void   CMySplitter::OnMouseMove(UINT   nFlags,   CPoint   point)     
  {   
  //   TODO:   Add   your   message   handler   code   here   and/or   call   default   
    
  if(   point.x   >   20   )   
        CSplitterWnd::OnMouseMove(nFlags,   point);   
                    else   
                          return;   
  }   
    
  4:Splitter也是窗口,当然可以,不过我不知道这样做有什么意义哦?

posted on 2009-07-29 10:00  rainduck  阅读(1360)  评论(0编辑  收藏  举报

导航