16,472
社区成员
发帖
与我相关
我的任务
分享
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);
this->GetTreePath(pNew,tvinamenew);
char DirName[MAX_PATH];
char DriveName[MAX_PATH]="";
strcpy(DirName,tvinamenew);
//
if(stricmp(DirName,"MY COMPUTER")==0) // yes
{
pMain->ListMyComputer();
pMain->ComboMyComputer("My Computer");
*pResult = 0;
return;
}
if(stricmp(DirName,"Control 802D")==0) // yes
{
pMain->List802D();
pMain->Combo802D("Control 802D");
*pResult = 0;
return;
}
// not "MY COMPUTER" and "CONTROL 802D"
BOOL MyPC;
MyPC=pMain->CutDriveName(DirName);
//
if(MyPC)
{ // contain "My Computer"
pMain->ListFiles(DirName,TRUE);
pMain->ComboMyComputer(DirName);
}
else
{ // contain "Control 802D"
pMain->List802Files(DirName,TRUE);
pMain->Combo802D(DirName);
}
*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;
}