⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selectfolderdlg.cpp

📁 3D reconstruction, medical image processing from colons, using intel image processing for based clas
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		case ':':		case '[':		case ']':			break;		default:			strRet += strUID[i];			break;		}	}	return strRet;}void RxLoadImportDlg::OnSelchangedTreeFolder(NMHDR* pNMHDR, LRESULT* pResult) {	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;	DWORD dwAttribs;	SHFILEINFO sfi;	TCHAR szPath[MAX_PATH];	CString strFolder("");		LPITEMINFO pItemInfo = (LPITEMINFO)pNMTreeView->itemNew.lParam;	dwAttribs = SFGAO_FILESYSTEM | SFGAO_FOLDER;	if (SHGetFileInfo((LPCTSTR)pItemInfo->pidlFQ, dwAttribs, &sfi, sizeof(sfi), SHGFI_PIDL | SHGFI_ATTRIBUTES)) {		if (sfi.dwAttributes & SFGAO_FILESYSTEM) {			if (SHGetPathFromIDList(pItemInfo->pidlFQ, szPath))				strFolder = szPath;		}	}		CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_FOLDER);	pStatic->SetWindowText(strFolder);	if (strFolder.Right(1) != "\\" && !strFolder.IsEmpty())		strFolder += "\\";	m_strCurSelFolder = strFolder;	// CD-ROM老 版快 Move file阑 disable茄促.	CString strDrive;	if (!m_strCurSelFolder.IsEmpty()) {		strDrive = m_strCurSelFolder.Left(3);		CButton* pButton = (CButton*)GetDlgItem(IDC_CHECK_MOVE_FILES);		if (::GetDriveType(strDrive) == DRIVE_CDROM)			pButton->EnableWindow(FALSE);		else			pButton->EnableWindow(TRUE);	}	CButton *pButtonQuick = (CButton*)GetDlgItem(IDC_CHECK_RECURSIVE_QUICK);	if (strFolder.IsEmpty()) {		pButtonQuick->EnableWindow(FALSE);		return;	} else {		pButtonQuick->EnableWindow(TRUE);	}	// List狼 葛电 郴侩阑 瘤款促.	LPITEMINFO pTmpItem;	CArray<TwoStrings, TwoStrings&> *pArr;	int nItemCount = m_listDICOMInfo.GetItemCount();	int j, iArraySize;	for (int i = 0; i < nItemCount; i++) {		pArr = (CArray<TwoStrings, TwoStrings&>*)m_listDICOMInfo.GetItemData(i);		iArraySize = pArr->GetSize();		for (j = 0; j < iArraySize; j++) {			pTmpItem = (*pArr)[j].pItemInfo;			Pidl_Free(pTmpItem->pidlFQ);			Pidl_Free(pTmpItem->pidlRel);			if (pTmpItem->pParentFolder)				pTmpItem->pParentFolder->Release();			delete[] pTmpItem;		}		delete pArr;	}	m_listDICOMInfo.DeleteAllItems();	// Dialog狼 郴侩阑 啊廉柯促	UpdateData(TRUE);	//LOG_MESSAGE("Before update list control in dialog");	if (pItemInfo && !strFolder.IsEmpty()) {		BeginWaitCursor();		UpdateListCtrl(pItemInfo, m_bRecursive, TRUE);		EndWaitCursor();	}	//LOG_MESSAGE("After update list control in dialog");	// Item捞 茄俺老 版快 急琶登绢 乐档废 茄促.	if (m_listDICOMInfo.GetItemCount() == 1)		m_listDICOMInfo.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED);	//眠啊等何盒 场	*pResult = 0;}void RxLoadImportDlg::UpdateListCtrl(LPITEMINFO pItemCur, BOOL bRecursive, BOOL bQuick){	int i, j, nItemCount, nCol, nCount, nID;	CString strFileVal;	CString strDicomFile;	CArray<TwoStrings, TwoStrings&> *pArr;	TwoStrings tsTemp;	RxDicomObject* pDcm;	BOOL bBreak;	CString strValue, strTemp;	int itype;	IShellFolder *psfCurFolder = NULL;	LPITEMIDLIST pidlCurFQ = NULL;		int iThresholdCount = 0;	if (pItemCur && pItemCur->pParentFolder) {		pItemCur->pParentFolder->BindToObject(pItemCur->pidlRel, NULL, IID_IShellFolder, (LPVOID*)&psfCurFolder);		pidlCurFQ = Pidl_Copy(pItemCur->pidlFQ);	} else {		SHGetDesktopFolder(&psfCurFolder);		if (pItemCur)			pidlCurFQ = Pidl_Copy(pItemCur->pidlFQ);	}	pDcm = new RxDicomObject;	if (m_pWndProgress)		m_pWndProgress->SetText(_T("Searching.."));	// 颇老甸阑 八祸	LPENUMIDLIST pEnum;	if (SUCCEEDED(psfCurFolder->EnumObjects(NULL,											SHCONTF_FOLDERS |											SHCONTF_NONFOLDERS,											&pEnum))) {		LPITEMIDLIST pidlTemp;		DWORD dwFetched = 1;		//enumerate the item's PIDLs		while (SUCCEEDED(pEnum->Next(1, &pidlTemp, &dwFetched)) && dwFetched) {			DWORD dwAttr;			LPITEMIDLIST pidlFQ;			LPITEMINFO pItem;			TCHAR szPath[MAX_PATH];			if (m_pWndProgress && m_pWndProgress->Cancelled()) {				delete m_pWndProgress;				m_pWndProgress = NULL;				m_bCancel = TRUE;				break;			} else if (!m_pWndProgress && m_bCancel ==TRUE)				break;			else if (m_pWndProgress){				m_pWndProgress->StepIt();				m_pWndProgress->PeekAndPump();			}			dwAttr = SFGAO_FILESYSTEM | SFGAO_FOLDER;			psfCurFolder->GetAttributesOf(1, (LPCITEMIDLIST*)&pidlTemp, &dwAttr);			if (dwAttr & SFGAO_FILESYSTEM) {				if ((dwAttr & SFGAO_FOLDER) && bRecursive) {					psfCurFolder->AddRef();					pItem = (LPITEMINFO)new BYTE[sizeof(ITEMINFO)];					pItem->pidlRel = pidlTemp;					pItem->pidlFQ = Pidl_Concatenate(pidlCurFQ, pidlTemp);					pItem->pParentFolder = psfCurFolder;					UpdateListCtrl(pItem, bRecursive, bQuick);					Pidl_Free(pItem->pidlFQ);					Pidl_Free(pItem->pidlRel);					// this may be NULL if this is the root item					if (pItem->pParentFolder)						pItem->pParentFolder->Release();					delete[] pItem;				} else if ((!(dwAttr & SFGAO_FOLDER)) && (iThresholdCount <= 5)) { //bQuick 捞 芭窿捞搁 公炼扒 捣促.					pidlFQ = Pidl_Concatenate(pidlCurFQ, pidlTemp);					if (SHGetPathFromIDList(pidlFQ, szPath)) {						if (bQuick)							iThresholdCount++;						strDicomFile = szPath;						strFileVal = strDicomFile.Right(strDicomFile.GetLength() - strDicomFile.ReverseFind('\\') - 1);						//LOG_MESSAGE("Before load head in dialog");						if(!pDcm->LoadHeader(strDicomFile))							continue;						//LOG_MESSAGE("After load head in dialog");						// ListCtrl俊 Study UID啊 绝栏搁 眠啊茄促.						//LOG_MESSAGE("Check if it is in list");						nItemCount = m_listDICOMInfo.GetItemCount();						bBreak = FALSE;						for (i = 0; i < nItemCount; i++) {							pArr = (CArray<TwoStrings, TwoStrings&>*)m_listDICOMInfo.GetItemData(i);							nCount = pArr->GetSize();														pDcm->GetDicomInfo(DI_STUDYUID, &strValue, &itype);							for (j = 0; j < nCount; j++) {								if (!((*pArr)[j].strUID.Compare(strValue))) {									bBreak = TRUE;									break;								}							}							if (bBreak)								break;						}						// 酒流 list俊 绝栏搁 insert						if (nItemCount == i) {							//LOG_MESSAGE("Before inserting item into list");							nCol = 1;							pDcm->GetDicomInfo(DI_PATIENTNAME, &strValue, &itype);							m_listDICOMInfo.InsertItem(nItemCount, strValue);														pDcm->GetDicomInfo(DI_PATIENTID, &strValue, &itype);							m_listDICOMInfo.SetItemText(nItemCount, nCol++, strValue);														pDcm->GetDicomInfo(DI_EXAMDATE, &strValue, &itype);							m_listDICOMInfo.SetItemText(nItemCount, nCol++, strValue);							pDcm->GetDicomInfo(DI_SEX, &strValue, &itype);							m_listDICOMInfo.SetItemText(nItemCount, nCol++, strValue);							pDcm->GetDicomInfo(DI_MODALITY, &strValue, &itype);							m_listDICOMInfo.SetItemText(nItemCount, nCol++, strValue);							pArr = new CArray<TwoStrings, TwoStrings&>;							pDcm->GetDicomInfo(DI_STUDYUID,&strValue,&itype);							tsTemp.strUID = strValue;							pItem = (LPITEMINFO)new BYTE[sizeof(ITEMINFO)];							pItem->pidlRel = Pidl_Copy(pItemCur->pidlRel);							pItem->pidlFQ = Pidl_Copy(pItemCur->pidlFQ);							if (pItemCur->pParentFolder)								pItemCur->pParentFolder->AddRef();							pItem->pParentFolder = pItemCur->pParentFolder;							tsTemp.pItemInfo = pItem;							pArr->Add(tsTemp);							m_listDICOMInfo.SetItemData(nItemCount, (DWORD)pArr);							//LOG_MESSAGE("After inserting item into list");						} else { // Study UID绰 乐绰单 folder啊 绝绰 版快							nID = i;							bBreak = FALSE;							for (i = 0; i < nItemCount; i++) {								pArr = (CArray<TwoStrings, TwoStrings&>*)m_listDICOMInfo.GetItemData(i);								nCount = pArr->GetSize();								for (j = 0; j < nCount; j++) {									if (!Pidl_Compare(pItemCur->pidlFQ, (*pArr)[j].pItemInfo->pidlFQ, 1)) {										bBreak = TRUE;										break;									}								}								if (bBreak)									break;							}							// UID绰 乐绰单 folder啊 绝阑 版快							if (nItemCount == i) {								nCol = 1;								pArr = (CArray<TwoStrings, TwoStrings&>*)m_listDICOMInfo.GetItemData(nID);																pDcm->GetDicomInfo(DI_STUDYUID, &strValue, &itype);								tsTemp.strUID = strValue;								pItem = (LPITEMINFO)new BYTE[sizeof(ITEMINFO)];								pItem->pidlRel = Pidl_Copy(pItemCur->pidlRel);								pItem->pidlFQ = Pidl_Copy(pItemCur->pidlFQ);								pItem->pParentFolder = pItemCur->pParentFolder;								pItemCur->pParentFolder->AddRef();								tsTemp.pItemInfo = pItem;								pArr->Add(tsTemp);							}							//LOG_MESSAGE("Check done");						}					}					Pidl_Free(pidlFQ);				}			}			dwFetched = 0;		}		pEnum->Release();	}	if (psfCurFolder) {		psfCurFolder->Release();		//psfCurFolder = NULL;		Pidl_Free(pidlCurFQ);		pidlCurFQ = NULL;	}	delete pDcm;}void RxLoadImportDlg::OnColumnclickListFolder(NMHDR* pNMHDR, LRESULT* pResult) {	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;	int nSortingColumn = pNMListView->iSubItem;	m_listDICOMInfo.InvertSortOrder(nSortingColumn);		RxSort sortColumn(&m_listDICOMInfo, nSortingColumn);	sortColumn.Sort(m_listDICOMInfo.GetSortOrder(nSortingColumn), (RxSort::EDataType)m_listDICOMInfo.GetSortType(nSortingColumn));			*pResult = 0;}void RxLoadImportDlg::OnCancel() {	// OnDestroy俊辑 皋葛府绰 瘤快瘤父	// Reference count绰 咯扁辑 皑家矫糯	LPITEMINFO pItemInfo;	CArray<TwoStrings, TwoStrings&> *pArr;	int nItemCount = m_listDICOMInfo.GetItemCount();	int j, iArraySize;	for (int i = 0; i < nItemCount; i++) {		pArr = (CArray<TwoStrings, TwoStrings&>*)m_listDICOMInfo.GetItemData(i);		iArraySize = pArr->GetSize();		for (j = 0; j < iArraySize; j++) {			pItemInfo = (*pArr)[j].pItemInfo;			if (pItemInfo->pParentFolder)				pItemInfo->pParentFolder->Release();		}	}	CDialog::OnCancel();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -