📄 tab4.h
字号:
#if !defined(AFX_TAB4_H__4FF42A0D_E850_4414_A03D_A7A76DEBB577__INCLUDED_)
#define AFX_TAB4_H__4FF42A0D_E850_4414_A03D_A7A76DEBB577__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Tab4.h : header file
//
#define MAXFILE 20 //每个用户最多保存20个文件
#define MAXUSER 10 //假想文件系统最多支持的人数
#define BLOCKSIZE 32 //虚拟磁盘中物理块为每块32字节
#define DISKSIZE BLOCKSIZE*1000 //虚拟磁盘容量为1000*32=32K VDISK.DAT=sizeof(FAT)+32K
#include "DlgNewFile.h"
#include "PieChartCtrl.h"
#include "BalloonTip.h"
/////////////////////////////////////////////////////////////////////////////
// CTab4 dialog
struct UFD
{
char FileName[15];
char Time[16]; //文件建立或修改时间
bool IsExist; //文件是否存在,删除时标为0
bool IsShared; //共享标记,共享文件可被其它用户所访问
bool AttrRead; //文件是否可读
bool AttrWrite; //文件是否可写
bool AttrExecute; //文件是否可执行
HTREEITEM treeNode; //用于树控件显示的结点句柄
USHORT FileLen; //文件占用字节数
USHORT BlockNum; //文件占用的物理块数
USHORT FileLink[100];//文件物理块地址数组,每块32字节,限定一个文件最大100*32=3200字节
};
struct MFD
{
char UserName[10]; //主目录用户名
bool IsExist; //该用户否存在
UFD ufd[MAXFILE]; //用户文件数组
USHORT nItem;//UFD个数
};
struct HEADBLOCK
{
BYTE pStack; //堆栈指针
SHORT pBlock[10]; //块号 pBlock[10]是下一个盘块号逻辑地址
};
struct BLOCK //虚拟磁盘的物理块数据结构
{
union{
BYTE block[32];
HEADBLOCK HeadInfo;
};
};
struct FAT
{
BLOCK SuperBlock; //超级块,指示第一个空闲块逻辑号
USHORT MaxOpen; //该用户同时可打开的最大文件数
USHORT UserNum; //最户数
MFD Mfd[MAXUSER]; //最多可支持10个用户
};
//空闲块成组链接法
class CTab4 : public CDialog
{
// Construction
public:
void ShowBallTip(CPoint pt, CString msg);
void ShowBlock(int fileid);
bool ModifyFile(CString FileName, CString FileContent, bool AttrRead, bool AttrWrite, bool AttrExecute, bool AttrShare);
int SelectPos;
bool OpenList[MAXUSER][MAXFILE];
CString SelectedFileName;
CString ReadFile(CString FileName);
bool CreateNewFile(CString FileName, CString FileContent, bool AttrRead, bool AttrWrite, bool AttrExecute,bool AttrShare);
CString GetCurrentTime();
bool KillFile(CString FileName);
void ShowUserFiles();
//bool WriteBlock(int id,BYTE *buffer);
//bool ReadBlock(int id,BYTE* buffer);
//bool FreeBlock(USHORT BlockID);
//USHORT AllocBlock();
void SetupImages(CImageList* mImageList, int iSize);
void AddListFile(CString FName,CString FileOwn,CString FSize,CString Date,CString State,CString Attr);
CTab4(CWnd* pParent = NULL); // standard constructor
CImageList* TreeImageList;
CImageList* m_pImageList;
CImageList* m_pImageListL;
// Dialog Data
//{{AFX_DATA(CTab4)
enum { IDD = IDD_TAB4 };
CButton m_LoginBtn;
CTreeCtrl m_FileTree;
CListCtrl m_FileList;
CString m_FileContent;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTab4)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
CBalloonTip* m_pBalloonTip;
CImageList m_cImageListNormal;
CBrush m_bluebrush;
COLORREF m_bluecolor,m_textcolor;
// Generated message map functions
//{{AFX_MSG(CTab4)
virtual BOOL OnInitDialog();
afx_msg void OnBtnLogin();
afx_msg void OnBtnAdd();
afx_msg void OnBtnModify();
afx_msg void OnBtnUser();
afx_msg void OnBtnDelete();
afx_msg void OnBtnDisk();
afx_msg void OnBtnClose();
afx_msg void OnBtnOpen();
afx_msg void OnClickFilelist(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
bool AddFile(CString Path, CString FName, int FSize,CString Attr);
void InitFileTree();
void InitFileList();
UINT ItemCount;
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TAB4_H__4FF42A0D_E850_4414_A03D_A7A76DEBB577__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -