📄 tab4.cpp
字号:
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 + -