📄 osdlg.cpp
字号:
folder *fft=flist[x]->child;
file *filt=flist[x]->files;
folder *newfo=new folder;
newfo->brother=NULL;
newfo->child=NULL;
newfo->father=flist[x];
newfo->files=NULL;
newfo->kind=11;
file *newfi=new file;
newfi->context=_T(" ");
newfi->kind=1;
newfi->next=NULL;
newfi->size=0;
if(xc<10||xc>99)
{
Cinbox inb;
inb.DoModal();
nam=inb.name;
if(nam.GetLength()==0)return;
newfo->name=nam;
newfi->name=nam;
if((nam.GetLength()<5||nam.Right(4)!=_T(".xyz"))&&(xc==0||xc==100||xc==101))
newfi->name=newfi->name+_T(".xyz");
if(xc==100||xc==101)xc=10;
else if(xc==102||xc==103)xc=11;
}
else if(xc==10)
{
newfi->context=fi_xc->context;
newfi->kind=fi_xc->kind;
newfi->size=fi_xc->size;
newfi->next=NULL;
newfi->prep=NULL;
}
else
{
newfo->child=fo_xc->child;
newfo->files=fo_xc->files;
newfo->kind=fo_xc->kind;
newfo->brother=NULL;
newfo->father=NULL;
newfo->name=fo_xc->name;
nam=fo_xc->name;
}
while(fft!=NULL&&flag)
{
if(fft->name==nam)
{
MessageBox(_T("文件重名!"));
if(xc<10)goto begain;
else return;
}
else
{
if(fft->brother==NULL)flag=0;
else fft=fft->brother;
}
}
flag=1;
while(filt!=NULL&&flag)
{
if(filt->name==nam)
{
MessageBox(_T("文件重名!"));
if(xc<10)goto begain;
else return;
}
else
{
if(filt->next==NULL)flag=0;
else filt=filt->next;
}
}
switch(kind)
{
case 0://wenj
if(filt==NULL)
{
newfi->prep=NULL;
flist[x]->files=newfi;
}
else
{
filt->next=newfi;
newfi->prep=filt;
}
break;
case 1://wenjianj
if(fpt==101)
{
MessageBox(_T("XYZ文件操作系统没有足够的空间创建新文件"));
return;
}
if(fft==NULL){flist[x]->child=newfo;newfo->father=flist[x];}
else {fft->brother=newfo;newfo->father=fft->father;}
UpdateData(1);
if(tree_list==-1)
dizhi=dizhi+_T("\\")+nam;
UpdateData(0);
break;
}
createtree();
OnBnClickedTurn();
if(xyz!=tree.GetSelectedItem()&&kind)
{
tree.SetItemImage(tree.GetSelectedItem(),0,0);
tree.Select(tree.GetParentItem(tree.GetSelectedItem()),TVGN_CARET);
tree.SetItemImage(tree.GetSelectedItem(),1,1);
}
if(xyz!=tree.GetSelectedItem())
tree.SetItemImage(tree.GetSelectedItem(),1,1);
else
tree.SetItemImage(tree.GetSelectedItem(),3,3);
}
void COSDlg::delet(int kind)
{
if(tree_list==-1)
{
if(tree.GetSelectedItem()==xyz||!root->child){MessageBox(_T("根节点不可以删除"));return;}
DWORD y=tree.GetItemData(tree.GetSelectedItem());
HTREEITEM treef=tree.GetParentItem(tree.GetSelectedItem());
selname=tree.GetItemText(treef);
if(!kind){fo_xc=flist[y];xc=11;}
folder*ft=flist[y]->father;
if(ft->child==flist[y])ft->child=flist[y]->brother;
else
{
ft=ft->child;
while(ft!=NULL)
{
if(ft->brother==flist[y]){ft->brother=flist[y]->brother;break;}
else ft=ft->brother;
}
}
UpdateData(1);
CString s=dizhi.Right(1);
while(s!=_T("\\"))
{
dizhi=dizhi.Left(dizhi.GetLength()-1);
s=dizhi.Right(1);
}
dizhi=dizhi.Left(dizhi.GetLength()-1);
goto turn;
}
else
{
CString ss=list.GetItemText(tree_list,0);
DWORD zz=list.GetItemData(tree_list);
folder *fotem=flist[zz]->child;
file *fitem=flist[zz]->files;
if(fotem->name==ss)
{
if(!kind){
fo_xc=fotem;xc=11;}
flist[zz]->child=fotem->brother;goto turn;
}
while(fotem!=NULL&&fotem->brother!=NULL)
{
if(fotem->brother->name==ss)
{
if(!kind){fo_xc=fotem->brother;xc=11;}
fotem->brother=fotem->brother->brother;goto turn;
}
else fotem=fotem->brother;
}
if(fitem->name==ss)
{
if(!kind){fi_xc=fitem;xc=10;}
flist[zz]->files=fitem->next;goto turn;
}
while(fitem!=NULL&&fitem->next!=NULL)
{
if(fitem->next->name==ss)
{
if(!kind){fi_xc=fitem->next;xc=10;}
fitem->next=fitem->next->next;goto turn;
}
else fitem=fitem->next;
}
}
turn:
UpdateData(0);
createtree();
OnBnClickedTurn();
if(xyz!=tree.GetSelectedItem())
tree.SetItemImage(tree.GetSelectedItem(),1,1);
else
tree.SetItemImage(tree.GetSelectedItem(),3,3);
}
void COSDlg::On32771()
{
// TODO: 在此添加命令处理程序代码
if(xc==10)xc=100;
else if(xc==11)xc=102;
else xc=0;
create();
}
void COSDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
OnOK();
}
void COSDlg::Onwenjj()
{
// TODO: 在此添加命令处理程序代码
if(xc==10)xc=101;
if(xc==11)xc=103;
else xc=1;
create();
}
void COSDlg::Ondetele()
{
// TODO: 在此添加命令处理程序代码
delet(1);
}
void COSDlg::Oncut()
{
// TODO: 在此添加命令处理程序代码
delet(0);
}
void COSDlg::Onv()
{
// TODO: 在此添加命令处理程序代码
if(xc>9)
create();
else
{
fi_xc=NULL;
fo_xc=NULL;
}
}
void COSDlg::Oncopy()
{
// TODO: 在此添加命令处理程序代码
if(tree_list==-1)
{
DWORD x=tree.GetItemData(tree.GetSelectedItem());
fo_xc=flist[x];
xc=11;
}
else
{
CString ss=list.GetItemText(tree_list,0);
DWORD zz=list.GetItemData(tree_list);
folder *fotem=flist[zz]->child;
file *fitem=flist[zz]->files;
while(fotem!=NULL)
{
if(fotem->name==ss)
{
fo_xc=fotem;xc=11;return;
}
else fotem=fotem->brother;
}
while(fitem!=NULL)
{
if(fitem->next->name==ss)
{
fi_xc=fitem;xc=10;return;
}
else fitem=fitem->next;
}
}
}
void COSDlg::On32781()
{
OnOK();
}
void COSDlg::OnNMDblclkLis(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
int c=list.GetSelectedCount();DWORD y;CString ss;
if(c>1){MessageBox(_T("操作的文件太多"));return;}
c=list.GetHotItem();
if(c==-1)return;
ss=list.GetItemText(c,0);
y=list.GetItemData(c);
folder *fotem=flist[y]->child;
file *fitem=flist[y]->files;
while(fotem!=NULL)
{
if(fotem->name==ss)
{
UpdateData(1);
dizhi=dizhi+_T("\\")+ss;
UpdateData(0);
OnBnClickedTurn();
break;
}
else fotem=fotem->brother;
}
while(fitem!=NULL)
{
if(fitem->name==ss)
{
Cshow sw;//=new show;
sw.context=fitem->context;
sw.size=fitem->size;
sw.name=fitem->name;
if(fitem->kind==0)sw.sx=_T("只读文件-我是受保护滴!");
else if(fitem->kind==1)sw.sx=_T("可读写文件-!--任你摆布!!!");
else if(fitem->kind==-1)sw.sx=_T("隐藏文件-你看不见我^@^!");
sw.DoModal();
if(sw.xch)
{
if(sw.name.GetLength()<5||sw.name.Right(4)!=_T(".xyz"))
sw.name=sw.name+_T(".xyz");
fitem->name=sw.name;
fitem->context=sw.context;
fitem->kind=sw.shuxing;
fitem->size=sw.context.GetLength();
UpdateData(1);
CString add=dizhi;
dizhi=_T("XYZ\\\\");
UpdateData(0);
OnBnClickedTurn();
UpdateData(1);
dizhi=add;
UpdateData(0);
OnBnClickedTurn();
}
break;
}
else fitem=fitem->next;
}
*pResult = 0;
}
void COSDlg::OnNMClickLis(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
if(list.GetHotItem()!=-1)
{
tree_list=list.GetHotItem();
}
*pResult = 0;
}
void COSDlg::Onback()
{
// TODO: 在此添加命令处理程序代码
UpdateData(1);
if(dizhi.GetLength()>6)
{
CString s=dizhi.Right(1);
while(s!=_T("\\"))
{
dizhi=dizhi.Left(dizhi.GetLength()-1);
s=dizhi.Right(1);
}
dizhi=dizhi.Left(dizhi.GetLength()-1);
UpdateData(0);
OnBnClickedTurn();
}
}
void COSDlg::Onhelp()
{
// TODO: 在此添加命令处理程序代码
CString ss=_T("XYZ文件操作系统,具有简单的文件管理功能\n\n 制作:于海瑞");
MessageBox(ss);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -