用ShellTree控件
想取得 选中目标的路径
然后反应在文本框中
写了下面的代码
void CSearchExploreDlg::OnClickMfcshelltree1(NMHDR*pNMHDR, LRESULT* pResult)
{
// TODO: ここにコントロール通知ハンドラー コードを追加します。
*pResult = 0;
UpdateData();
CString strPath;
m_wbdShellTree.GetItemPath(strPath);
SetDlgItemText(IDC_EDIT1, strPath);}
但是现在的结果总是显示的上一次选中的目标的路径(反应慢一步 )
还想请大神们指教一下
想取得 选中目标的路径
然后反应在文本框中
写了下面的代码
void CSearchExploreDlg::OnClickMfcshelltree1(NMHDR*pNMHDR, LRESULT* pResult)
{
// TODO: ここにコントロール通知ハンドラー コードを追加します。
*pResult = 0;
UpdateData();
CString strPath;
m_wbdShellTree.GetItemPath(strPath);
SetDlgItemText(IDC_EDIT1, strPath);}
但是现在的结果总是显示的上一次选中的目标的路径(反应慢一步 )
还想请大神们指教一下
解决方案 »
- 谁有自己封装好的对话框类?
- 老问题:c语言中的字符数组和字符串指针
- TechExcel(中国)有限公司诚聘VC++ 高级开发工程师
- 如何写SQL语法:查询自动编号字段编号在某个范围之内的语句?
- 高分求助,怎样通过ActiveX得到上一级网页的地址
- 在ATL中如何模拟MFC的PreTanslateMessage函数?
- !!怎样做一个类似输入法中软键盘那样的窗体,总在最前边,又没有焦点,还能接受输入???!!
- CArray<>的问题
- 大家好, 我是新注册的用户, 希望大家说说自己学COM的经验, 学习的过程! 最主要的是我想知道怎么学比较好.
- 111222你给的这段代码有问题呀!
- 大哥们,CListCtrl类怎么实现这种功能?
- 用mfc做的usb通讯,接收的数据中前一部分是正确的,后面出现一堆烫烫烫烫
试过TVN_SELCHANGED
传递参数 但是没有反应
不知道是不是我写错了
请帮忙看一下void CSearchExploreDlg::OnClickMfcshelltree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: ここにコントロール通知ハンドラー コードを追加します。 //UpdateData(FALSE); CString strPath;
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
HTREEITEM hitem = pNMTreeView->itemNew.hItem;
m_wbdShellTree.GetItemPath(strPath,NULL);
SetDlgItemText(IDC_EDIT1, strPath);
ScreenDisplay(); *pResult = 0;
}
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here CString szSel;
TVITEM *pItem = &pNMTreeView->itemNew;
if(pItem->hItem != NULL)
szSel = m_TreeCtrl.GetItemText(pItem->hItem);
TRACE(_T("Sel=%s\n"), szSel);
*pResult = 0;
}
void CLeftView::GetTreePath(const TVITEM *ptvi,char *pbuf)
{
CTreeCtrl& LeftTree=this->GetTreeCtrl(); HTREEITEM hParentItem;
TVITEM tvi;
char tviname[MAX_PATH];
char treepath[MAX_PATH];
char drivename[MAX_PATH];
char tmp[MAX_PATH];
// make a copy of ptvi
memcpy(&tvi,ptvi,sizeof(TVITEM));
memset(drivename,0,sizeof(drivename));
memset(treepath,0,sizeof(treepath));
hParentItem=tvi.hItem;// init
while (hParentItem)
{
tvi.hItem=hParentItem;// initilized !
tvi.mask=TVIF_TEXT;
tvi.pszText=tviname;
tvi.cchTextMax=MAX_PATH;
strcpy(tviname,LeftTree.GetItemText(tvi.hItem));
if (strlen(treepath)) sprintf(tmp,"%s\\%s",tviname,treepath);
else sprintf(tmp,"%s",tviname);
strcpy(treepath,tmp);
// get parent
hParentItem=LeftTree.GetParentItem(tvi.hItem);
}
// AfxMessageBox(treepath);
strcpy(pbuf,treepath);
return;
}调用
void CMainFrame::RefreshListView()
{
char DestPath[MAX_PATH];
CLeftView *LeftView=GetLeftPane();
CTreeCtrl &LeftTree=LeftView->GetTreeCtrl();
TVITEM tvsi;
HTREEITEM htvi=LeftTree.GetSelectedItem();
tvsi.hItem=htvi;
LeftView->GetTreePath(&tvsi,DestPath);
}