我将不同的CTreeCtrl动态挂接到一个控件中,每次在切换时,并不能将新挂接的CTreeCtrl正确显示,我一个个点击每个Item,点击到的Item刷新重绘显示正确了.我开始以为是这个控件容器没有进行背景重绘,于是我加了强制重绘的代码。结果重绘进行了,CTreeCtrl仍然如前。所以问题应该是CTreeCtrl自己没有正确重绘。所以如果找到CTreeCtrl绘制item的地方,应该就能找到其在什么情况下重绘,从而能找到在什么地方让CTreeCtrl的可见Items逐个刷新一次。请问哪位高手知道CTreeCtrl在什么地方逐条绘制每个item?
解决方案 »
- 在MFC下,这段代码放在OnPaint函数中,为什么就是画不上图形?
- 关于CPropertySheet任务栏不能缩小, 和如何设置可以随意拉动窗口大小
- 在类成员函数中调用全局sdk函数前面显示加上::是不是好的程序风格啊?
- 为什么 unsigned char 数组也能存储中文?
- 祝大家新春愉快、身体健康、鸡年如意!
- 一个菜鸟问题CreateCompatibleDC(NULL)申不申请空间阿
- 高分求助:视频会议中怎样把组播改成单播啊?
- 大于256色的位图怎样导入?用LoadBitmap()不行。
- 为什么有时用库里的结构,编程时没有显示成员的提示?
- 請問有哪些軟件可以監控一個執行文件究竟調用了哪些文件(包括系統的)給個下載地址﹖絕對給分﹗
- 请教高手! 怎么样可以刷新一个CTreeCtrl?
- 能否在文本框(CEdit)中显示自定义形状?
控件客户区的绘制都是WM_PAINT触发的
是半天都没找到的,拜托!帮看看CTreeCtrl源代码再说!
m_treeCtrl->Invalidate();
m_listCtrl->UpdateWindow();试试看!
CTreeCtrl应该隐藏掉,不是新挂接的CTreeCtrl没有更新。
bool DockPageBar::SetPage(CWnd *pWnd, LPCTSTR sText, UINT IconID)
{
ASSERT(IsWindow(pWnd->m_hWnd));
uiPageItem *pItem = GetPageItem(sText);
if (!pItem)
return AddPage(pWnd,sText,IconID); if (pItem->m_pWnd)
pItem->m_pWnd->ShowWindow(SW_HIDE); pItem->m_pWnd = pWnd; ...
... if(pWnd)
{
CRect rect;
GetClientRect(rect, m_PageList.GetCount()>1?TRUE:FALSE);
pWnd->MoveWindow(rect);
pWnd->ShowWindow(SW_HIDE);
}
UpdateWindow();
return true;
}