Tab4.h
上传用户:tianjwyx
上传日期:2007-01-13
资源大小:813k
文件大小:4k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. #if !defined(AFX_TAB4_H__4FF42A0D_E850_4414_A03D_A7A76DEBB577__INCLUDED_)
  2. #define AFX_TAB4_H__4FF42A0D_E850_4414_A03D_A7A76DEBB577__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // Tab4.h : header file
  7. //
  8. #define MAXFILE 20   //每个用户最多保存20个文件
  9. #define MAXUSER 10   //假想文件系统最多支持的人数
  10. #define BLOCKSIZE 32 //虚拟磁盘中物理块为每块32字节
  11. #define DISKSIZE BLOCKSIZE*1000  //虚拟磁盘容量为1000*32=32K VDISK.DAT=sizeof(FAT)+32K
  12. #include "DlgNewFile.h"
  13. #include "PieChartCtrl.h"
  14. #include "BalloonTip.h"
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CTab4 dialog
  17. struct UFD
  18. {
  19. char FileName[15];
  20. char Time[16];      //文件建立或修改时间
  21. bool IsExist;      //文件是否存在,删除时标为0
  22. bool IsShared;      //共享标记,共享文件可被其它用户所访问
  23. bool AttrRead;      //文件是否可读
  24. bool AttrWrite;     //文件是否可写
  25. bool AttrExecute;   //文件是否可执行
  26. HTREEITEM treeNode; //用于树控件显示的结点句柄
  27. USHORT FileLen;     //文件占用字节数
  28. USHORT BlockNum;   //文件占用的物理块数
  29. USHORT FileLink[100];//文件物理块地址数组,每块32字节,限定一个文件最大100*32=3200字节
  30. };
  31. struct MFD
  32. {
  33. char UserName[10];  //主目录用户名
  34. bool IsExist;      //该用户否存在
  35. UFD ufd[MAXFILE];   //用户文件数组  
  36. USHORT nItem;//UFD个数
  37. };
  38. struct HEADBLOCK
  39. {
  40. BYTE pStack;    //堆栈指针
  41. SHORT pBlock[10]; //块号   pBlock[10]是下一个盘块号逻辑地址
  42. };
  43. struct BLOCK          //虚拟磁盘的物理块数据结构
  44. {
  45.    union{
  46.         BYTE block[32];
  47.        HEADBLOCK HeadInfo;
  48. };
  49. };
  50. struct FAT
  51. {
  52. BLOCK  SuperBlock;     //超级块,指示第一个空闲块逻辑号
  53. USHORT MaxOpen;       //该用户同时可打开的最大文件数
  54. USHORT UserNum;       //最户数
  55. MFD    Mfd[MAXUSER];  //最多可支持10个用户
  56. };
  57. //空闲块成组链接法
  58. class CTab4 : public CDialog
  59. {
  60. // Construction
  61. public:
  62. void ShowBallTip(CPoint pt, CString msg);
  63. void ShowBlock(int fileid);
  64. bool ModifyFile(CString FileName, CString FileContent, bool AttrRead, bool AttrWrite, bool AttrExecute, bool AttrShare);
  65. int SelectPos;
  66. bool OpenList[MAXUSER][MAXFILE];
  67. CString SelectedFileName;
  68. CString ReadFile(CString FileName);
  69. bool CreateNewFile(CString FileName, CString FileContent, bool AttrRead, bool AttrWrite, bool AttrExecute,bool AttrShare);
  70. CString GetCurrentTime();
  71. bool KillFile(CString FileName);
  72. void ShowUserFiles();
  73. //bool WriteBlock(int id,BYTE *buffer);
  74. //bool ReadBlock(int id,BYTE* buffer);
  75. //bool FreeBlock(USHORT BlockID);
  76. //USHORT AllocBlock();
  77. void SetupImages(CImageList* mImageList, int iSize);
  78. void AddListFile(CString FName,CString FileOwn,CString FSize,CString Date,CString State,CString Attr);
  79. CTab4(CWnd* pParent = NULL);   // standard constructor
  80.     CImageList* TreeImageList;
  81. CImageList* m_pImageList;
  82. CImageList* m_pImageListL;
  83. // Dialog Data
  84. //{{AFX_DATA(CTab4)
  85. enum { IDD = IDD_TAB4 };
  86. CButton m_LoginBtn;
  87. CTreeCtrl m_FileTree;
  88. CListCtrl m_FileList;
  89. CString m_FileContent;
  90. //}}AFX_DATA
  91. // Overrides
  92. // ClassWizard generated virtual function overrides
  93. //{{AFX_VIRTUAL(CTab4)
  94. protected:
  95. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  96. //}}AFX_VIRTUAL
  97. // Implementation
  98. protected:
  99. CBalloonTip* m_pBalloonTip;
  100.     CImageList m_cImageListNormal;
  101. CBrush m_bluebrush;
  102. COLORREF m_bluecolor,m_textcolor;
  103. // Generated message map functions
  104. //{{AFX_MSG(CTab4)
  105. virtual BOOL OnInitDialog();
  106. afx_msg void OnBtnLogin();
  107. afx_msg void OnBtnAdd();
  108. afx_msg void OnBtnModify();
  109. afx_msg void OnBtnUser();
  110. afx_msg void OnBtnDelete();
  111. afx_msg void OnBtnDisk();
  112. afx_msg void OnBtnClose();
  113. afx_msg void OnBtnOpen();
  114. afx_msg void OnClickFilelist(NMHDR* pNMHDR, LRESULT* pResult);
  115. afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
  116. //}}AFX_MSG
  117. DECLARE_MESSAGE_MAP()
  118. private:
  119. bool AddFile(CString Path, CString FName, int FSize,CString Attr);
  120. void InitFileTree();
  121. void InitFileList();
  122. UINT ItemCount;
  123. };
  124. //{{AFX_INSERT_LOCATION}}
  125. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  126. #endif // !defined(AFX_TAB4_H__4FF42A0D_E850_4414_A03D_A7A76DEBB577__INCLUDED_)