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

📄 tab4.cpp

📁 三个实验,作业管理,内存管理,文件管理,好东西来的
💻 CPP
📖 第 1 页 / 共 3 页
字号:

	CDialog::OnOK();
}

BOOL CDlgLogin::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
    InitUserList();
	ShowUser();
	UserID=0;
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgLogin::InitUserList()
{
    HIMAGELIST hList = ImageList_Create(32,32, ILC_COLOR8 |ILC_MASK , 15, 1);
	m_ImageList.Attach(hList);
	m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_USER));	
	m_UserList.SetImageList(&m_ImageList, LVSIL_NORMAL);
	

}

/////////////////////////////////////////////////////////////////////////////
// CTab4 dialog


CTab4::CTab4(CWnd* pParent /*=NULL*/)
	: CDialog(CTab4::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTab4)
	m_FileContent = _T("");
	//}}AFX_DATA_INIT
}


void CTab4::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTab4)
	DDX_Control(pDX, IDC_BTN_LOGIN, m_LoginBtn);
	DDX_Control(pDX, IDC_FILETREE, m_FileTree);
	DDX_Control(pDX, IDC_FILELIST, m_FileList);
	DDX_Text(pDX, IDC_FILE_CONTENT, m_FileContent);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTab4, CDialog)
	//{{AFX_MSG_MAP(CTab4)
	ON_BN_CLICKED(IDC_BTN_LOGIN, OnBtnLogin)
	ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
	ON_BN_CLICKED(IDC_BTN_MODIFY, OnBtnModify)
	ON_BN_CLICKED(IDC_BTN_USER, OnBtnUser)
	ON_BN_CLICKED(IDC_BTN_DELETE, OnBtnDelete)
	ON_BN_CLICKED(IDC_BTN_DISK, OnBtnDisk)
	ON_BN_CLICKED(IDC_BTN_CLOSE, OnBtnClose)
	ON_BN_CLICKED(IDC_BTN_OPEN, OnBtnOpen)
	ON_NOTIFY(NM_CLICK, IDC_FILELIST, OnClickFilelist)
	ON_WM_CTLCOLOR()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTab4 message handlers

BOOL CTab4::OnInitDialog() 
{
	CDialog::OnInitDialog();
	bLogin=false;
	ItemCount=0;
    m_bluecolor=RGB(239,239,239); // blue
	m_textcolor=RGB(0,0,255); // white text
	m_bluebrush.CreateSolidBrush(m_bluecolor); // blue background
	InitFileList();
	InitFileTree();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CTab4::InitFileList()
{
    DWORD dwStyle = m_FileList.GetExtendedStyle();
	ListView_SetExtendedListViewStyle(m_FileList.m_hWnd, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_FileList.InsertColumn(0,"文件名",LVCFMT_LEFT,100);
	m_FileList.InsertColumn(1,"文件主",LVCFMT_LEFT,60);
	m_FileList.InsertColumn(2,"文件大小",LVCFMT_RIGHT,80);
	m_FileList.InsertColumn(3,"修改时间",LVCFMT_LEFT,120);
	m_FileList.InsertColumn(4,"状态",LVCFMT_LEFT,40);
	m_FileList.InsertColumn(5,"属性",LVCFMT_LEFT,40);
	
	m_pImageList = new CImageList();
	m_pImageListL = new CImageList();

	SetupImages(m_pImageList, 16);
	SetupImages(m_pImageListL, 32);
	m_FileList.SetImageList(m_pImageList, LVSIL_SMALL);
	m_FileList.SetImageList(m_pImageListL, LVSIL_NORMAL);
    
}

void CTab4::InitFileTree()
{
   TreeImageList = new CImageList();
   TreeImageList->Create(20, 20, ILC_COLOR8 | ILC_MASK,  9, 9);
   TreeImageList->Add(AfxGetApp()->LoadIcon(IDI_COMPUTER));
   TreeImageList->Add(AfxGetApp()->LoadIcon(IDI_USER));
   TreeImageList->Add(AfxGetApp()->LoadIcon(IDI_FILE));
   TreeImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON2));
   m_FileTree.SetImageList(TreeImageList,TVSIL_NORMAL);
   HTREEITEM hRoot = m_FileTree.InsertItem("请先登录文件系统",0,0);
   
}



bool CTab4::AddFile(CString Path, CString FName, int FSize,CString Attr)
{
     return true;
}

void CTab4::AddListFile(CString FName,CString FileOwn,CString FSize,CString Date,CString State,CString Attr)
{
	LVITEM lvitem;
	int iActualItem;
	for(int iSubItem=0;iSubItem<6;iSubItem++)
	{
		lvitem.mask = LVIF_TEXT|(iSubItem == 0? LVIF_IMAGE : 0);
		lvitem.iItem = (iSubItem == 0)? ++ItemCount : iActualItem;
		lvitem.iSubItem = iSubItem;
		switch(iSubItem)
		{
		case 0:
			lvitem.pszText =(LPTSTR)(LPCTSTR)FName;
            
			Attr.MakeUpper();
			if (Attr.Find("E")>0)
				lvitem.iImage=1;
			else
				lvitem.iImage=0;
			break;
		case 1:
			lvitem.pszText = (LPTSTR)(LPCTSTR)FileOwn;
     		break;
        case 2:
			FSize+=" 字节";
			lvitem.pszText = (LPTSTR)(LPCTSTR)FSize;
			break;
		case 3:
			lvitem.pszText = (LPTSTR)(LPCTSTR)Date;
			break;
		case 4:
			lvitem.pszText = (LPTSTR)(LPCTSTR)State;
			break;
		case 5:
            lvitem.pszText = (LPTSTR)(LPCTSTR)Attr;
			break;
		} 
		if (iSubItem == 0)
			iActualItem = m_FileList.InsertItem(&lvitem);
		else
			m_FileList.SetItem(&lvitem);
	}
}

void CTab4::SetupImages(CImageList *mImageList, int iSize)
{
    mImageList->Create(iSize, iSize, ILC_COLOR8 | ILC_MASK,  9, 9);
	mImageList->Add(AfxGetApp()->LoadIcon(IDI_FILE));
	mImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON2));
}








void CTab4::OnBtnAdd() 
{
    	
	    if(!CheckLogin()) return;
	    CDlgNewFile DlgNewFile;
		DlgNewFile.flag=true;
		if(DlgNewFile.DoModal()==IDOK)
		{
			if(CreateNewFile(DlgNewFile.m_FileName,DlgNewFile.m_Content,true,(!DlgNewFile.m_Read),DlgNewFile.m_Execute,DlgNewFile.m_Share))
			{
				MessageBox("添加文件成功!","提示:",MB_ICONINFORMATION);
			}
			else
			{
				MessageBox("添加文件失败!可能磁盘空间不足或已超过用户允许保存的文件数!","提示:",MB_ICONEXCLAMATION);
			}
		}
		ShowUserFiles();
}

void CTab4::OnBtnModify() 
{
      	if(!CheckLogin()) return;
	    CDlgNewFile DlgNewFile;
		DlgNewFile.flag=false;
		DlgNewFile.m_FileName=SelectedFileName;
		DlgNewFile.m_Content=ReadFile(SelectedFileName);
        CString Attribute=m_FileList.GetItemText(SelectPos,5);
		DlgNewFile.m_Execute=Attribute.Find("E")>0?true:false;
        DlgNewFile.m_Read=Attribute.Find("W")>0?false:true;
		DlgNewFile.m_Share=Attribute.Find("S")>0?true:false;
		//DlgNewFile.UpdateData(false);
		if(DlgNewFile.DoModal()==IDOK)
		{
			if(ModifyFile(DlgNewFile.m_FileName,DlgNewFile.m_Content,true,(!DlgNewFile.m_Read),DlgNewFile.m_Execute,DlgNewFile.m_Share))
			{
				MessageBox("修改文件成功!","提示:",MB_ICONINFORMATION);
			}
			else
			{
				MessageBox("修改文件失败!","提示:",MB_ICONEXCLAMATION);
			}
		}
		ShowUserFiles();
}
void CTab4::OnBtnLogin() 
{
	FATIO.Close();
   StartIO();
   if(!bFormated) 
   {
	   CDlgUser DlgUser;
	   DlgUser.DoModal();
	   return;
   }
   CDlgLogin dlgLogin;
   ZeroMemory(&OpenList,sizeof(OpenList));
   if(dlgLogin.DoModal()==IDOK)
   {
        CurrentUser=dlgLogin.UserName;
		CurrentID=dlgLogin.UserID;
		ShowUserFiles();
        bLogin=true;
		CRect rect;
        m_FileList.GetWindowRect(&rect);
        CPoint pt = rect.CenterPoint();
        ShowBallTip(pt,"单击列表的文件项,可以选定文件查看其内容或是其它操作!");
   }
}
/////////////////////////////////////////////////////////////////////////////
// CDlgUser dialog



void CTab4::OnBtnUser() 
{
    CDlgUser DlgUser;
	DlgUser.DoModal();
}

void CDlgUser::OnAddUser() 
{
    	UpdateData(true);
		if (FileFAT.UserNum>=10)
		{
			AfxMessageBox("用户数量已达到最大10个,你可以删除一些无用的帐号!");
			return;
		}
        for(int i=0;i<10;i++)
		{
			if(FileFAT.Mfd[i].IsExist==false)
			{
               
			   wsprintf(FileFAT.Mfd[i].UserName,m_UserName);
			   FileFAT.Mfd[i].IsExist=true;
			   FileFAT.Mfd[i].nItem=0;
			   break;
			}
		}
		FileFAT.UserNum++;
        WriteFAT();
		ReadFAT();
		ShowUser();
		m_UserName.Empty();
		UpdateData(false);
}

void CDlgUser::ShowUser()
{
    m_UserListView.DeleteAllItems();
	ReadFAT();
	int i;
	//CString str;
	//str.Format("%d",FileFAT.UserNum);
    //MessageBox(str);
	CString strItem;
	for (i=0;i<FileFAT.UserNum;i++)
	{
        strItem.Format("%d",FileFAT.Mfd[i].nItem);
		AddListUser(FileFAT.Mfd[i].UserName,strItem);

	}

}

void CDlgLogin::AddUserList(CString Name)
{
    LVITEM lvi;
	lvi.mask =  LVIF_IMAGE | LVIF_TEXT;
	lvi.iItem = 0;
	lvi.iSubItem = 0;
	lvi.iImage = 0;
	lvi.pszText = (LPTSTR)(LPCTSTR)(Name);
	m_UserList.InsertItem(&lvi);
}

void CDlgLogin::ShowUser()
{
    m_UserList.DeleteAllItems();
	ReadFAT();
	for (int i=0;i<FileFAT.UserNum;i++)
	{
		AddUserList(FileFAT.Mfd[i].UserName);

		m_UserName.AddString(FileFAT.Mfd[i].UserName);
		m_UserName.SetCurSel(0);
	}

	m_UserList.SetHotItem(0);
}

void CTab4::OnBtnDelete() 
{
//	m_JobList.-1)

	
       if(!CheckLogin()) return;

		if(!m_FileList.GetFirstSelectedItemPosition())
		{
			MessageBox("请先在文件列表中选择要删除的文件!","提示:",MB_ICONSTOP);
			return;
		}


        if(KillFile(SelectedFileName))
		    ShowUserFiles();
        else
			MessageBox("文件删除出错!","错误:",MB_ICONEXCLAMATION);
}



void CDlgLogin::OnClickUserlist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	CString strName=m_UserList.GetItemText(pNMListView->iItem,pNMListView->iSubItem);
    CString ComboText;
	for (int i=0;i<m_UserName.GetCount();i++)
	{
		ComboText.Empty();
		m_UserName.GetLBText(i,ComboText);
        if (strName==ComboText) m_UserName.SetCurSel(i);
	}
	*pResult = 0;
}





void CTab4::ShowUserFiles()
{
    int i;
	m_FileTree.DeleteAllItems();
    m_FileList.DeleteAllItems();
	HTREEITEM hRoot = m_FileTree.InsertItem("我的电脑",0,0);
	CString FileNum;
	FileNum.Format(" (%d Files)",FileFAT.Mfd[CurrentID].nItem);
	
    HTREEITEM  hDir1 = m_FileTree.InsertItem (CurrentUser+FileNum,1,1,hRoot);
    
     SYSTEMTIME systm;
    ::GetLocalTime(&systm);
    CString TimeStr;
    TimeStr.Format("%d/%d/%d %d:%d",systm.wYear,systm.wMonth,systm.wDay,systm.wHour,systm.wMinute);
    CString strFileLen,strFileAttr,strFileState;
	for (i=0;i<MAXFILE;i++)
	{
		if(FileFAT.Mfd[CurrentID].ufd[i].IsExist==true)
		{
			 if(FileFAT.Mfd[CurrentID].ufd[i].AttrExecute)
				 m_FileTree.InsertItem ( FileFAT.Mfd[CurrentID].ufd[i].FileName,3,3,hDir1);
			 else
                 m_FileTree.InsertItem ( FileFAT.Mfd[CurrentID].ufd[i].FileName,2,2,hDir1);
	         strFileLen.Format("%d",FileFAT.Mfd[CurrentID].ufd[i].FileLen);
			 strFileAttr.Empty();
             strFileState=(OpenList[CurrentID][i])?"打开":"关闭";
			 if(FileFAT.Mfd[CurrentID].ufd[i].AttrRead)
			    strFileAttr+="R";
			 if(FileFAT.Mfd[CurrentID].ufd[i].AttrWrite)
			    strFileAttr+="W";
			 if(FileFAT.Mfd[CurrentID].ufd[i].AttrExecute)
			    strFileAttr+="E";
			 if(FileFAT.Mfd[CurrentID].ufd[i].IsShared)
			    strFileAttr+="S";
			 AddListFile(FileFAT.Mfd[CurrentID].ufd[i].FileName,CurrentUser,strFileLen,FileFAT.Mfd[CurrentID].ufd[i].Time,strFileState,strFileAttr);
		}
	}
	m_FileTree.Expand(hRoot,TVE_EXPAND);
	m_FileTree.Expand(hDir1,TVE_EXPAND);
}
/////////////////////////////////////////////////////////////////////////////
// CDlgDisk dialog

class CDlgDisk : public CDialog
{
// Construction
public:
	CDlgDisk(CWnd* pParent = NULL);   // standard constructor
    CPieChartCtrl m_wndChart;
// Dialog Data
	//{{AFX_DATA(CDlgDisk)
	enum { IDD = IDD_DLGDISK };
	CStatic	m_PicDisk;
	CString	m_Used;
	CString	m_UserNum;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CDlgDisk)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(CDlgDisk)
	virtual BOOL OnInitDialog();
	afx_msg void OnExit();
	afx_msg void OnFormat();
	//}}AFX_MSG

⌨️ 快捷键说明

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