📄 chtrecnerodlg.cpp
字号:
FreeAllItemInfo();
CDialog::OnOK();
}
void CChtRecNeroDlg::OnCancel()
{
NeroAPIFree();
FreeAllItemInfo();
CDialog::OnCancel();
}
void CChtRecNeroDlg::OnButton5()
{
if(m_pndiDeviceInfos->nsdisNumDevInfos!=1)
{
int i = m_cbxDevices.GetCurSel();
NERO_SCSI_DEVICE_INFO* nsdiDevice =(NERO_SCSI_DEVICE_INFO*)m_cbxDevices.GetItemDataPtr(i);
m_ndhDeviceHandle = NeroOpenDevice(nsdiDevice);
if (!m_ndhDeviceHandle)
{
AfxMessageBox("Device could not be opened: "+(CString)nsdiDevice->nsdiDeviceName);
}
else
{
m_strMediaType= "<no media>";
DWORD dwFlags=0;
m_NeroCDInfo=NeroGetCDInfo (m_ndhDeviceHandle, dwFlags);
if (NULL != m_NeroCDInfo)
{
char * psMedia = NeroGetTypeNameOfMedia (m_NeroCDInfo->ncdiMediaType, NULL);
if (psMedia != NULL && psMedia[0] != '\0')
{
m_strMediaType=CString(psMedia);
if(m_strMediaType=="CD-RW")
m_btnErase.EnableWindow(true);
NeroFreeMem (psMedia);
}
else
{
m_strMediaType= "<no media>";
}
m_strPlusValue.Format("%dM",(int)((float)m_NeroCDInfo->ncdiFreeCapacityInBlocks/359849*700));
m_strCapValue.Format("%dM",(int)((float)m_NeroCDInfo->ncdiTotalCapacity/359849*700));
}
UpdateData(FALSE);
NeroFreeMem (m_NeroCDInfo);
}
NeroCloseDevice(m_ndhDeviceHandle);
}
else{m_btnBrowse.EnableWindow(false);
AfxMessageBox("No Real Drive");}
}
void CChtRecNeroDlg::OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
HTREEITEM hItem=m_Tree.GetSelectedItem();
//TRACE("sd %d",hItem);
if(hItem==m_Tree.GetRootItem())
{
PRInfo pinfo = new RInfo;
pinfo->isDir=TRUE;
pinfo->FullName="";
m_Tree.SetItemData(hItem,(DWORD)pinfo);
}
if(hItem)
{
CPoint cPoint ;
GetCursorPos(&cPoint) ;
CMenu menu;
menu.LoadMenu(IDR_CONTEXTMENU);
bool isDirectory=((PRInfo)m_Tree.GetItemData(hItem))->isDir;
if(isDirectory==TRUE||hItem==m_Tree.GetRootItem())
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,cPoint.x,cPoint.y,AfxGetMainWnd());
else
menu.GetSubMenu(1)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,cPoint.x,cPoint.y,AfxGetMainWnd());
*pResult = 0;
}
}
void CChtRecNeroDlg::OnMenuadd()
{
static char BASED_CODE szFilterData[] = "All Files (*.*)|*.*||";
CFileDialog dlgOpen(TRUE, NULL, NULL, OFN_FILEMUSTEXIST |OFN_ALLOWMULTISELECT, szFilterData, this);
if (dlgOpen.DoModal() == IDOK)
{
POSITION pos = dlgOpen.GetStartPosition();
while (pos != NULL)
{
CString filename = dlgOpen.GetNextPathName(pos);
HANDLE hFile;
DWORD dwFileSize;
hFile = CreateFile(filename, GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
//AfxMessageBox("fgh");
dwFileSize = GetFileSize(hFile, NULL);
m_dTotalSize+=dwFileSize;
m_strTotalSize.Format("%ldM",m_dTotalSize/1024/1024);
m_dFileNum++;
UpdateData(FALSE);
InvalidateRect(NULL,FALSE);
CloseHandle(hFile);
PRInfo pinfo = new RInfo;
pinfo->isDir=FALSE;
pinfo->FullName=filename;
HTREEITEM hItem=AddItem(filename, m_Tree.GetSelectedItem());
m_Tree.SetItemData(hItem,(DWORD)pinfo);
/*if (m_lstFileList.FindString(0, filename) == LB_ERR)
{
m_lstFileList.AddString(filename);
}*/
}
}
//AddItem("F:\\U-571\\B.RMVB", NULL);
}
void CChtRecNeroDlg::OnMenunew()
{
int foldclose = m_SmallImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
int foldopen = m_SmallImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_Tree.SetImageList (&m_SmallImageList,LVSIL_NORMAL);
HTREEITEM hItem=m_Tree.GetSelectedItem();
hItem=m_Tree.InsertItem("新建文件夹", foldopen, foldclose, hItem);
PRInfo pinfo = new RInfo;
pinfo->isDir=TRUE;
pinfo->FullName="";
m_Tree.SetItemData(hItem,(DWORD)pinfo);
}
HTREEITEM CChtRecNeroDlg::AddItem(const char *path, HTREEITEM parent, bool isDir, int iconEx, int iconEx2)
{
SHFILEINFO shinfo, shinfo_sel;
SHGetFileInfo( path, NULL,
&shinfo,
sizeof(shinfo),
SHGFI_DISPLAYNAME | SHGFI_ICON | SHGFI_SMALLICON);
SHGetFileInfo( path, NULL,
&shinfo_sel,
sizeof(shinfo_sel),
SHGFI_DISPLAYNAME | SHGFI_ICON | SHGFI_OPENICON | SHGFI_SMALLICON);
int icon = iconEx!=-1 ? iconEx : m_SmallImageList.Add(shinfo.hIcon);
int iconsel = iconEx2!=-1 ? iconEx2 : m_SmallImageList.Add(shinfo_sel.hIcon);
m_Tree.SetImageList (&m_SmallImageList,LVSIL_NORMAL);
//DeviceName = shinfo.szDisplayName;
HTREEITEM hitm;
hitm=m_Tree.InsertItem( shinfo.szDisplayName, icon+1, iconsel, parent);
//if (isDir) m_Tree.InsertItem( "",hitm);
return hitm;
}
void CChtRecNeroDlg::OnEndlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
HTREEITEM hItem=m_Tree.GetSelectedItem();
//GetItemText(hItem);
CString SZ;
m_Tree.GetEditControl()->GetWindowText(SZ);
m_Tree.SetItemText(hItem,SZ);
*pResult = 0;
}
NERO_ISO_ITEM* CChtRecNeroDlg::DeepIntoNode(HTREEITEM hItem,NERO_ISO_ITEM*niiFatherItem)
{int i=0;
NERO_ISO_ITEM* first =0;
NERO_ISO_ITEM* firsttemp =0;
HTREEITEM hItemInit=hItem;
while(hItem)
{
bool isDirectory=((PRInfo)m_Tree.GetItemData(hItem))->isDir;
NERO_ISO_ITEM* pniiNewItem1 = NeroCreateIsoItem();
memset(pniiNewItem1, 0, sizeof(NERO_ISO_ITEM));
if (m_pniiFile == 0)
m_pniiFile = pniiNewItem1;
if(isDirectory==TRUE)
{
if(!m_Tree.GetChildItem(hItem))
{
CString dirname=m_Tree.GetItemText(hItem);
pniiNewItem1->longFileName = strdup(dirname);
pniiNewItem1->longSourceFilePath = strdup("");
pniiNewItem1->isDirectory =TRUE;
pniiNewItem1->isReference = FALSE;
pniiNewItem1->unicodeFileName = NULL;
pniiNewItem1->nextItem = NULL;
}
else
{
CString dirname=m_Tree.GetItemText(hItem);
pniiNewItem1->longFileName = strdup(dirname);
pniiNewItem1->longSourceFilePath = strdup("");
pniiNewItem1->isDirectory =TRUE;
pniiNewItem1->isReference = FALSE;
pniiNewItem1->unicodeFileName = NULL;
pniiNewItem1->nextItem = NULL;
hItem=m_Tree.GetChildItem(hItem);
pniiNewItem1->subDirFirstItem=DeepIntoNode(hItem,pniiNewItem1);
hItem=m_Tree.GetParentItem(hItem);
}
}
else
{
CString filename=((PRInfo)m_Tree.GetItemData(hItem))->FullName;
char path[MAX_PATH];
char* name;
GetFullPathName(filename, MAX_PATH, path, &name);
pniiNewItem1->longFileName = strdup(name);
pniiNewItem1->longSourceFilePath = strdup(path);
pniiNewItem1->isDirectory =FALSE;
pniiNewItem1->isReference = FALSE;
pniiNewItem1->unicodeFileName = NULL;
pniiNewItem1->nextItem = NULL;
}
i++;
if(firsttemp)
firsttemp->nextItem=pniiNewItem1;
firsttemp=pniiNewItem1;
if(i==1)
first=firsttemp;
hItem=m_Tree.GetNextSiblingItem(hItem);
}
return first;
}
void CChtRecNeroDlg::FreeAllItemInfo()
{
HTREEITEM hItem=m_Tree.GetRootItem();
PRInfo info=(PRInfo)m_Tree.GetItemData(hItem);
if(info!=NULL)
{
delete info;
m_Tree.SetItemData(hItem,0);
AfxMessageBox("root");
}
hItem=m_Tree.GetChildItem(hItem);
while(hItem)
{
if(m_Tree.GetChildItem(hItem))
_FreeAllItemInfo(hItem);
info=(PRInfo)m_Tree.GetItemData(hItem);
if(info!=NULL)
{
delete info;
m_Tree.SetItemData(hItem,0);
AfxMessageBox("subone");
}
hItem=m_Tree.GetNextSiblingItem(hItem);
}
}
void CChtRecNeroDlg::_FreeAllItemInfo(HTREEITEM hItem)
{
hItem=m_Tree.GetChildItem(hItem);
while(hItem)
{
if(m_Tree.GetChildItem(hItem))
_FreeAllItemInfo(hItem);
PRInfo info=(PRInfo)m_Tree.GetItemData(hItem);
if(info!=NULL)
{
delete info;
m_Tree.SetItemData(hItem,0);
AfxMessageBox("subtwo");
}
hItem=m_Tree.GetNextSiblingItem(hItem);
}
}
void CChtRecNeroDlg::OnMenufidel()
{
HTREEITEM hItem=m_Tree.GetSelectedItem();
bool isDirectory=((PRInfo)m_Tree.GetItemData(hItem))->isDir;
if(isDirectory==FALSE)
{
CString filename=((PRInfo)m_Tree.GetItemData(hItem))->FullName;
HANDLE hFile;
DWORD dwFileSize;
hFile = CreateFile(filename, GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
dwFileSize = GetFileSize(hFile, NULL);
m_dTotalSize-=dwFileSize;
m_strTotalSize.Format("%dM",m_dTotalSize/1024/1024);
m_dFileNum--;
UpdateData(FALSE);
CloseHandle(hFile);
PRInfo info=(PRInfo)m_Tree.GetItemData(hItem);
if(info!=NULL)
{
delete info;
m_Tree.SetItemData(hItem,0);
AfxMessageBox("signle file delete");
}
m_Tree.DeleteItem(hItem);
}
else
{
if(hItem==m_Tree.GetRootItem())
return;
if(m_Tree.GetChildItem(hItem))
{
hItem=m_Tree.GetChildItem(hItem);
while(hItem)
{
if(m_Tree.GetChildItem(hItem))
CountSizeCycle(hItem);
if(((PRInfo)m_Tree.GetItemData(hItem))->isDir==FALSE)
{
CString filename=((PRInfo)m_Tree.GetItemData(hItem))->FullName;
HANDLE hFile;
DWORD dwFileSize;
hFile = CreateFile(filename, GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
dwFileSize = GetFileSize(hFile, NULL);
m_dTotalSize-=dwFileSize;
m_strTotalSize.Format("%dM",m_dTotalSize/1024/1024);
m_dFileNum--;
UpdateData(FALSE);
CloseHandle(hFile);
}
hItem=m_Tree.GetNextSiblingItem(hItem);
}
}
HTREEITEM hItem=m_Tree.GetSelectedItem();
PRInfo info=(PRInfo)m_Tree.GetItemData(hItem);
if(info!=NULL)
{
delete info;
m_Tree.SetItemData(hItem,0);
AfxMessageBox("folder delete");
}
hItem=m_Tree.GetChildItem(hItem);
while(hItem)
{
if(m_Tree.GetChildItem(hItem))
_FreeAllItemInfo(hItem);
info=(PRInfo)m_Tree.GetItemData(hItem);
if(info!=NULL)
{
delete info;
m_Tree.SetItemData(hItem,0);
AfxMessageBox("subone");
}
hItem=m_Tree.GetNextSiblingItem(hItem);
}
hItem=m_Tree.GetSelectedItem();
m_Tree.DeleteItem(hItem);
}
}
void CChtRecNeroDlg::OnMenufodel()
{
HTREEITEM hItem=m_Tree.GetSelectedItem();
if(hItem==m_Tree.GetRootItem())
return;
if(m_Tree.GetChildItem(hItem))
{
hItem=m_Tree.GetChildItem(hItem);
while(hItem)
{
if(m_Tree.GetChildItem(hItem))
CountSizeCycle(hItem);
if(((PRInfo)m_Tree.GetItemData(hItem))->isDir==FALSE)
{
CString filename=((PRInfo)m_Tree.GetItemData(hItem))->FullName;
HANDLE hFile;
DWORD dwFileSize;
hFile = CreateFile(filename, GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
dwFileSize = GetFileSize(hFile, NULL);
m_dTotalSize-=dwFileSize;
m_strTotalSize.Format("%dM",m_dTotalSize/1024/1024);
m_dFileNum--;
UpdateData(FALSE);
CloseHandle(hFile);
}
hItem=m_Tree.GetNextSiblingItem(hItem);
}
}
hItem=m_Tree.GetSelectedItem();
PRInfo info=(PRInfo)m_Tree.GetItemData(hItem);
if(info!=NULL)
{
delete info;
m_Tree.SetItemData(hItem,0);
AfxMessageBox("folder delete");
}
hItem=m_Tree.GetChildItem(hItem);
while(hItem)
{
if(m_Tree.GetChildItem(hItem))
_FreeAllItemInfo(hItem);
info=(PRInfo)m_Tree.GetItemData(hItem);
if(info!=NULL)
{
delete info;
m_Tree.SetItemData(hItem,0);
AfxMessageBox("subone");
}
hItem=m_Tree.GetNextSiblingItem(hItem);
}
hItem=m_Tree.GetSelectedItem();
m_Tree.DeleteItem(hItem);
}
void CChtRecNeroDlg::OnSetfocusTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
}
BOOL CChtRecNeroDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(CWnd::PreTranslateMessage(pMsg))
return TRUE;
HTREEITEM hItem=m_Tree.GetRootItem();
if(!m_Tree.GetChildItem(hItem))
return 0;
return ((m_hAccelTable!=NULL)&&
::TranslateAccelerator(m_hWnd,m_hAccelTable,pMsg));
}
void CChtRecNeroDlg::CountSizeCycle(HTREEITEM hItem)
{
hItem=m_Tree.GetChildItem(hItem);
while(hItem)
{
if(m_Tree.GetChildItem(hItem))
CountSizeCycle(hItem);
if(((PRInfo)m_Tree.GetItemData(hItem))->isDir==FALSE)
{
CString filename=((PRInfo)m_Tree.GetItemData(hItem))->FullName;
HANDLE hFile;
DWORD dwFileSize;
hFile = CreateFile(filename, GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
dwFileSize = GetFileSize(hFile, NULL);
m_dTotalSize-=dwFileSize;
m_strTotalSize.Format("%dM",m_dTotalSize/1024/1024);
m_dFileNum--;
UpdateData(FALSE);
CloseHandle(hFile);
}
hItem=m_Tree.GetNextSiblingItem(hItem);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -