首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC中树形控件有关问题

2012-04-16 
VC中树形控件问题VC中,在单击树形控件某一条目时,总是对上一次选中的条目作出响应怎么回事?请大虾指点。[解

VC中树形控件问题
VC中,在单击树形控件某一条目时,总是对上一次选中的条目作出响应怎么回事?请大虾指点。

[解决办法]
typedef struct tagNMTREEVIEW {
NMHDR hdr; 
UINT action; 
TVITEM itemOld;
TVITEM itemNew;
POINT ptDrag; 
} NMTREEVIEW, FAR *LPNMTREEVIEW; 

//注意有2个items。
[解决办法]

试试这两个消息响应函数
void CViewTree::OnNMDblclk(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
CString Node_Name,str;
//LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
//Node_Name=GetItemText(pNMTreeView->itemNew.hItem);
int No;
HTREEITEM hCurrSel = GetSelectedItem();
Node_Name=GetItemText(hCurrSel);
str=Node_Name.Right(2);
No=atoi(str);

CMainFrame* frm=(CMainFrame*)AfxGetMainWnd();
frm->m_TreeName=Node_Name;
frm->m_ModuleNo=No-1;
if(frm->m_ViewNo==1)
{
frm->m_MainView->m_Form1->m_TreeName=Node_Name;
frm->m_MainView->m_Form1->Invalidate(FALSE);
}
if(frm->m_ViewNo==2)
{
frm->m_MainView->m_Form2->m_TreeName=Node_Name;
frm->m_MainView->m_Form2->Invalidate(FALSE);
}
//str.Format("%d-%d ",(No-1)/8+1,(No-1)%8+1);
//str+=Node_Name;
AfxMessageBox(str);
*pResult = 0;
}


BOOL CViewTree::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// TODO: 在此添加专用代码和/或调用基类
BOOL bRes = CTreeCtrl::OnNotify(wParam, lParam, pResult);

NMHDR* pNMHDR = (NMHDR*)lParam;
ASSERT(pNMHDR != NULL);

if (pNMHDR && pNMHDR->code == TTN_SHOW && GetToolTips() != NULL)
{
GetToolTips()->SetWindowPos(&wndTop, -1, -1, -1, -1, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOSIZE);
}

return bRes;
}

[解决办法]
void CLeftView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CMainFrame *pMain=(CMainFrame*)AfxGetMainWnd();
// get LeftTree
CTreeCtrl& LeftTree=this->GetTreeCtrl();

TVITEM *pNew=NULL;
//
char tvinamenew[MAX_PATH];
pNew=&(pNMTreeView->itemNew);

热点排行