2 qq 28254507 qq_28254507 于 2016.02.14 11:52 提问

MFC 做的CTreeView根项不能打开的问题 5C

相关代码如下:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if (!m_wndSplitter.CreateStatic(this, 1, 2))
{
return FALSE;
}
CRect rect;
GetClientRect(&rect);

m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(TreeView), CSize(rect.Width() / 3 - 170, rect.Height()), pContext);

if (!m_wndSplitter2.CreateStatic(&m_wndSplitter, 1, 2, WS_CHILD | WS_VISIBLE, m_wndSplitter.IdFromRowCol(0, 1))
    || !m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(EditView), CSize(rect.Width() / 3 - 50, rect.Height()), pContext)
    || !m_wndSplitter2.CreateView(0, 1, RUNTIME_CLASS(EditView), CSize(rect.Width() / 3, rect.Height()), pContext))
{
    return FALSE;
}
return TRUE;
//return CFrameWnd::OnCreateClient(lpcs, pContext);

}

void TreeView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();

ptheTree = &GetTreeCtrl();
ptheTree->ModifyStyle(0, TVS_HASLINES | TVS_EDITLABELS | TVS_HASBUTTONS | TVS_EDITLABELS | TVS_LINESATROOT);
TVINSERTSTRUCT tvInsert;
HTREEITEM hTreeItem;
tvInsert.hInsertAfter = TVI_LAST;//TVI_LAST;
tvInsert.hParent = TVI_ROOT;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = "搜索引擎";
hTreeItem = ptheTree->InsertItem(&tvInsert);
tvInsert.hParent = hTreeItem;
tvInsert.item.pszText = "Google";
ptheTree->InsertItem(&tvInsert);
tvInsert.item.pszText = "Baidu";
ptheTree->InsertItem(&tvInsert);
ptheTree->Expand(hTreeItem, TVE_EXPAND); //默认为合上的TVE_COLLAPSE,打开的TVE_EXPAND

}

做出来后效果这样图片说明

但是当我点根项时并没有展开(况且我类型设置了TVE_EXPAND,应该直接是打开的啊。。),而且单击根项应该选中高亮的也没有(实际效果是高亮一下后立刻恢复了,就跟刷新了似得)。

大家帮我看看问题可能出在哪。。

2个回答

caozhy
caozhy   Ds   Rxr 2016.02.15 06:04

ptheTree->Expand.Expand(hTreeItem, TVE_TOGGLE);
试试看这样

VisualEleven
VisualEleven   Ds   Rxr 2016.02.16 14:41

代码没啥问题,我试了一下,可以看到展开的效果的。图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!