为了实现类似VisualStudio Workspace风格的窗体,我把CTreeCtrl摆在CTabCtrl里,
但是动态创建的CTreeCtrl风格老是出不来边框,尽管我已经设了WS_EX_DLGMODALFRAME,
代码如下:
//start...
// create a tab control with tree controls inside it....
  if (!m_TabCtrl.Create(WS_CHILD | WS_VISIBLE | TCS_BOTTOM | TCS_MULTILINE,
                        CRect(0,0,0,0), this, 1234))
    {
        TRACE("Failed to create Tab control\n");
        return -1;
    } m_ImgList.Create( IDB_TREEBAR, 16, 1, RGB(192, 192, 192));
    
    m_TabCtrl.SetFont(CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT))); 
    m_TabCtrl.SetImageList(&m_ImgList);
    // populate the tab control ....
    LPCTSTR szTabName[] = { _T("Forms"), _T("Files")};
  
    for (int i = 0; i < sizeof(szTabName) / sizeof(LPCTSTR); i++)
    {
CTreeCtrl * pTreeCtrl = new CTreeCtrl;
        DWORD dwStyle = WS_VISIBLE | 
WS_BORDER  | 
WS_CHILD   |
TVS_HASBUTTONS | 
                    TVS_HASLINES   | 
   TVS_LINESATROOT | 
   TVS_TRACKSELECT |
WS_TABSTOP ; 
        if (!pTreeCtrl->Create(dwStyle, CRect(10,10,173,390), &m_TabCtrl, i))
            return -1;      // failed to create tree control
        pTreeCtrl->ModifyStyle(0, WS_EX_DLGMODALFRAME|WS_EX_CLIENTEDGE|WS_EX_STATICEDGE,1);        TC_ITEM TCI;
        TCI.mask = TCIF_TEXT | TCIF_PARAM | TCIF_IMAGE;
        TCI.pszText = (char *)szTabName[i];
        TCI.lParam = (LPARAM)pTreeCtrl;
        TCI.iImage = i;
        VERIFY(m_TabCtrl.InsertItem(i, &TCI) != -1);
    
        // insert some items into the tree control.
        HTREEITEM hRoot = pTreeCtrl->InsertItem(szTabName[i]);
        for (int j = 0; j < 4; j++)
        {
            CString strText;
            strText.Format("item %d", j);
            pTreeCtrl->InsertItem(strText , hRoot);
        }
}
// end ...还望各位指点,thanx.

解决方案 »

  1.   

    去掉WS_EX_CLIENTEDGE|WS_EX_STATICEDGE两个属性
      

  2.   

    哈哈 这个问题我知道if (!pTreeCtrl->Create(dwStyle, CRect(10,10,173,390), &m_TabCtrl, i))
                return -1;      // failed to create tree control
            pTreeCtrl->ModifyStyle(0, WS_EX_DLGMODALFRAME|WS_EX_CLIENTEDGE|WS_EX_STATICEDGE,1);// 这儿增加一句:
    pTreeCtrl->ShowScroll(SB_BOTH);  // OK
      

  3.   

    刚刚试过去掉WS_EX_CLIENTEDGE  &brvbar;WS_EX_STATICEDGE,还是不行啊,
      

  4.   

    to:wanglei888(阿笨猫)
    // 这儿增加一句:
    pTreeCtrl->ShowScroll(SB_BOTH);  // OK???我试了一下:
    error C2039: 'ShowScroll' : is not a member of 'CTreeCtrl'
      

  5.   

    不好意思,写错了
    pTreeCtrl->ShowScrollBar(SB_BOTH);  
      

  6.   

    我的问题是WS_EX_DLGMODALFRAME没有效果(出不来边框),而不是ScrollBar出不来.
    so,the problem is still there.
      

  7.   

    解决了:
    if (!pTreeCtrl->Create(dwStyle, CRect(10,10,173,390), &m_TabCtrl, i))
                return -1;      // failed to create tree control
         pTreeCtrl->ModifyStyleEx(  // 改成ModifyStyleEx
    0,  
    WS_EX_DLGMODALFRAME|WS_EX_CLIENTEDGE|WS_EX_STATICEDGE);// 这儿增加一句:
    pTreeCtrl->ShowScrollBar(SB_BOTH);  // OK
    pTreeCtrl->ShowScrollBar(SB_BOTH,FALSE)