为啥CTreeCtrl选中某项的时候会闪烁

为什么CTreeCtrl选中某项的时候会闪烁?
用的是BCGControlBar里CWorkSpaceBar(类似VS左边的侧边栏)所自带的CBCGPTreeCtrl,不过试了试CTreeCtrl一样出现闪烁问题。
即:
当CTreeCtrl展开后,用鼠标选择某一项,则周围的上下几行出现闪烁现象。

请问如何避免呢?貌似也无法用LockWindowUpdate等方法来做,因为选中本身会产生高亮效果,这个效果要正常显示,就不能屏蔽更新,不知道说的对不对。。

下面是主要代码:
int CWorkSpaceBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CBCGPDockingControlBar::OnCreate(lpCreateStruct) == -1)
return -1;

CRect rectDummy;
rectDummy.SetRectEmpty ();

// Create tree windows.
// TODO: create your own tab windows here:
const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | 
TVS_LINESATROOT | TVS_HASBUTTONS;

//m_wndTree.m_bVisualManagerStyle = TRUE;

if (!m_wndTree.Create (dwViewStyle, rectDummy, this, ID_TREE_PROTOCOL))
{
TRACE0("Failed to create workspace view\n");
return -1;      // fail to create
}

// Setup trees content:
//  HTREEITEM hRoot1 = m_wndTree.InsertItem (_T("Root 1"));
//  m_wndTree.InsertItem (_T("Item 1"), hRoot1);
//  m_wndTree.InsertItem (_T("Item 2"), hRoot1);

return 0;
}

void CWorkSpaceBar::OnSize(UINT nType, int cx, int cy) 
{
CBCGPDockingControlBar::OnSize(nType, cx, cy);

// Tab control should cover a whole client area:

m_wndTree.SetWindowPos (NULL, nBorderSize, nBorderSize, 
cx - 2 * nBorderSize, cy - 2 * nBorderSize,
SWP_NOACTIVATE | SWP_NOZORDER);
}

void CWorkSpaceBar::OnPaint() 
{
CPaintDC dc(this); // device context for painting

CRect rectTree;
m_wndTree.GetWindowRect (rectTree);
ScreenToClient (rectTree);

rectTree.InflateRect (nBorderSize, nBorderSize);

dc.Draw3dRect (rectTree, globalData.clrBarShadow, globalData.clrBarShadow);
}

------解决方案--------------------
OnPait 去掉看看,实在不行再双缓冲试试
------解决方案--------------------
m_treeCtrl.SetExtendedStyle(TVS_EX_DOUBLEBUFFER, TVS_EX_DOUBLEBUFFER);
------解决方案--------------------
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法