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

📄 osdlg.cpp

📁 操作系统课程设计 文件管理 希望对大家有帮助
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -