重载CSplitter的OnDrawSplitter后,拖动分割线,显示不出拖动的路径;如果不重载,就可以显示。代码如下:void CMainSplitter::OnDrawSplitter(CDC* pDC,ESplitType nType,const CRect& rectArg)
{
// if pDC == NULL, then just invalidate
if(!(GetStyle()&WS_CLIPCHILDREN))
ModifyStyle(0,WS_CLIPCHILDREN); if (pDC == NULL)
{
RedrawWindow(rectArg, NULL, RDW_INVALIDATE|RDW_NOCHILDREN);
return;
}
ASSERT_VALID(pDC); // 画边框
CRect rect = rectArg;
switch (nType)
{
case splitBorder:
pDC->Draw3dRect(rect, GetSysColor(COLOR_3DFACE), GetSysColor(COLOR_3DHILIGHT));
rect.InflateRect(-1, -1);
pDC->Draw3dRect(rect, GetSysColor(COLOR_BTNFACE), GetSysColor(COLOR_BTNHIGHLIGHT));
return; case splitIntersection:
break; case splitBox:
break; case splitBar:
break; default:
ASSERT(FALSE); // unknown splitter type
} // 画中间,你可以在这里该颜色
pDC->FillSolidRect(rect, m_clrBtnFace);
}
{
// if pDC == NULL, then just invalidate
if(!(GetStyle()&WS_CLIPCHILDREN))
ModifyStyle(0,WS_CLIPCHILDREN); if (pDC == NULL)
{
RedrawWindow(rectArg, NULL, RDW_INVALIDATE|RDW_NOCHILDREN);
return;
}
ASSERT_VALID(pDC); // 画边框
CRect rect = rectArg;
switch (nType)
{
case splitBorder:
pDC->Draw3dRect(rect, GetSysColor(COLOR_3DFACE), GetSysColor(COLOR_3DHILIGHT));
rect.InflateRect(-1, -1);
pDC->Draw3dRect(rect, GetSysColor(COLOR_BTNFACE), GetSysColor(COLOR_BTNHIGHLIGHT));
return; case splitIntersection:
break; case splitBox:
break; case splitBar:
break; default:
ASSERT(FALSE); // unknown splitter type
} // 画中间,你可以在这里该颜色
pDC->FillSolidRect(rect, m_clrBtnFace);
}
............
default:
CSplitter::OnDrawSplitter(CDC* pDC,ESplitType nType,const CRect& rectArg) //重载也要保留原函数的基本功能才行