SDI,分成了几个窗口,定义成了formview,想让分割的窗口带上标题栏,该怎么做?

解决方案 »

  1.   

    在试图类中ModifyStyle(0, WS_CAPTION);
      

  2.   

    在OnCreateClient中添加:
    ((CForm**View*)m_wndSplitter.GetPane(0,0))->ModifyStyle(NULL,WS_CAPTION,0);
    当效果不是很好,
    我觉得楼主要实现这个功能最好还是自绘窗口。
    楼主请参考:http://www.vckbase.com/document/viewdoc/?id=317
      

  3.   


    这样就智能用CFormView了,建议自己绘制一个假的标题栏。
    void CMyView::OnPaint()
    {
    CPaintDC dc(this); // device context for painting
    // TODO: 在此处添加消息处理程序代码
    // 不为绘图消息调用 CView::OnPaint()
    CRect rect;
    GetClientRect(&rect);
    dc.FillSolidRect(0, 0, rect.Width(), 20, RGB(192, 192, 192)); // 可以贴图等
    dc.Draw3dRect(0, 0, rect.Width(), 20, RGB(255, 255, 255), RGB(51, 51, 51));

    dc.SetBkMode(TRANSPARENT);
    dc.DrawText(_T("Caption"), rect, DT_SINGLELINE); // "Caption"可以作为一个变量
             ……
             ……}
      

  4.   

    http://www.codeproject.com/KB/library/guitoolkit.aspx试试这个库, 编译时需要xp sdk支持看CGuiAccess这个工程,里面实现了给Splitter加标题bar
      

  5.   

    或者看看这个,更简单A Flat Splitter Windowhttp://www.codeproject.com/KB/splitter/flatsplitter.aspx
      

  6.   


    和我的类似,他这也是自己绘制的标题栏
    void CRightView::OnDraw(CDC* pDC)
    {
    CRect rect,rcClient;
    GetClientRect(rcClient); COLORREF crLight = GetSysColor(COLOR_BTNHIGHLIGHT);
    COLORREF crShadow = GetSysColor(COLOR_BTNSHADOW);
    COLORREF crFrame = GetSysColor(COLOR_WINDOWFRAME);
    COLORREF crBtnFace = GetSysColor(COLOR_BTNFACE); pDC->SetBkMode(TRANSPARENT);
    CGdiObject *pOldFont = pDC->SelectStockObject(ANSI_VAR_FONT); rect = rcClient; // title rect
    rect.bottom = rect.top + 22;
    pDC->FillSolidRect(rect,crBtnFace);
    pDC->Draw3dRect(rect,crLight,crShadow);
    pDC->DrawText("   Text Editor:",rect,DT_SINGLELINE|DT_VCENTER); // rect that makes the edit control look even more sunken (windoze default)
    rect.top = rect.bottom;
    rect.bottom = rcClient.bottom;
    pDC->Draw3dRect(rect,crFrame,crBtnFace); pDC->SelectObject(pOldFont);
    }