void CCallStackView::InitCallStackTree()
{
int err;
CString sOutBuf, sLine;
int iPos = 1;
int iSel; m_treeCtrlCallstack.DeleteAllItems(); m_treeCtrlCallstack.SetRedraw(false);
if(m_spCallStackItemList.get())
m_spCallStackItemList->clear();
try
{
err = m_mslRddata->Exchange ("bt", &sOutBuf);
while (iPos > 0)
{
iPos = sOutBuf.Find ('\n', 1);
sLine = sOutBuf.Left(iPos);
sOutBuf = sOutBuf.Mid (iPos + 1);
if (iPos > 0 && m_spCallStackItemList.get())
{
CCallStackViewItemSharedPtr spCallStack = CCallStackViewItemSharedPtr(new CCallStackViewItem(sLine));
m_spCallStackItemList->push_back(spCallStack);
}
} if(m_spCallStackItemList.get())
{
CCallStackViewItemList::iterator it = m_spCallStackItemList->begin();
for( ; it != m_spCallStackItemList->end() ; it++)
{
(*it)->displayItem(m_treeCtrlCallstack,m_treeCtrlCallstack.GetRootItem());
} }
}
catch (CMemoryException* e)
{
}
catch (CFileException* e)
{
}
catch (CException* e)
{
}
for(HTREEITEM hItem = m_treeCtrlCallstack.GetRootItem() ; hItem != NULL ; hItem = m_treeCtrlCallstack.GetNextSiblingItem(hItem))
{
m_treeCtrlCallstack.Expand(hItem,TVE_EXPAND);
}
m_treeCtrlCallstack.SetRedraw(true);
return;
}
上面的函数InitCallStackTree()被一个定时器所触发,所以每次都会把树展开,关上,有没有好的办法解决这样的问题?
解决方案 »
- 内存。。。
- InitInstance()里面一个困惑很久的问题!
- 控件 线
- 打印问题,愁死我了!大哥们救命啊!!!!
- help,哪位大虾给我个多个client连接server一个端口,并通讯数据的例子?
- byry(pepsi) 接分!
- 谁知道如何修改不知道源代码的exe文件的功能?
- 怎样调整控件大小?
- 想——用发光二级管等电子元件做个仪器来检测用户上没有上网——怎么做?
- 小弟初学VC,过去曾看过windows编程,刚学过C++,现在要选毕业设计题目了,想用VC做一个图书馆的MIS,主要目的是想学一下VC,不知道这个想法可行不可行?
- QQ的多个聊天窗口产生自同一个进程如何实现
- 为什么总是报“无法解析服务器的名臣和地址”
有一个方法我自己也没有试过,刚想出来的。就是整两个树控件,始终保持一个隐藏,一个显示,更新时更新隐藏的那一个,然后将其显示,将显示的隐藏,不知道这样会怎么样。
m_treeCtrlCallstack.DeleteAllItems()
m_treeCtrlCallstack.SetRedraw(true);
m_treeCtrlCallstack.InvalidateRect(NULL);
m_treeCtrlCallstack.UpdateWindow();这样 树不会闪烁了,但是还有个问题,就是每次选中一个树节点,然后又不被选中了(因为事实上树是从新生成了),请问这个问题怎么解决?