welcome to my file and memory system
project name: file and memory system
project role: leader and main developer
project technique: vs 2005 ,c/c++,MFC
project introduction: imitating the file and memory system of operating system
project core code:
///file system
#pragma once
#include "CMyFileManagerClass.h"
#include "myFileManagerDlg.h"
#include "afxcmn.h"
// CFileManager dialog
class CFileManager : public CDialog
{
DECLARE_DYNAMIC(CFileManager)
public:
CFileManager(CWnd* pParent = NULL); // standard constructor
CFileManager(int FCBNumbers,CWnd* pParent = NULL);//创建新的文件系统
CFileManager(CString filePath,CWnd* pParent = NULL);//打开已经存在的文件系统
virtual ~CFileManager();
// Dialog Data
enum { IDD = IDD_DIALOG1 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
//////////////////data
CMyFileManager *pMyFileManager;//文件管理器
int nFCBNumber;//新建文件系统的FCB个数
CString myFilePath;//打开文件系统的路径
int nWay;//选择的新建的文件还是文件夹
bool bIsExpand;//表示树型控件是否展开
public:
CListCtrl myFileListCtrl;
CTreeCtrl myFileTreeCtrl;
HTREEITEM hFocusItem;
virtual BOOL OnInitDialog();
afx_msg void OnClose();
afx_msg void OnBnClickedButtonnew();
afx_msg void OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnBnClickedButtondelete();
afx_msg void OnBnClickedButtonopen();
afx_msg void OnHdnItemdblclickList1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnTvnItemexpandedTree1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnBnClickedButtonup();
afx_msg void OnBnClickedSavesys();
};
////memory system
struct memoryBlock
{
bool isUsed;
int lowAddress;
int highAddress;
int size;
int programID;//当内存块被使用的时候就被标示为 正在使用它的程序ID
memoryBlock *next;
memoryBlock(){
isUsed=false;
lowAddress=0;
highAddress=0;
size=0;
programID=0;
next=NULL;
};
void Draw(CDC *pDC);
};
class memoryManager//这个就是管理内存的类
{
private:
memoryBlock* memoryList;
int nBlocks;
bool bMemReArrange;
public:
memoryManager();//初始化的时候是把640KB的内存都清成空闲状态
bool NewMemory(memoryBlock *pMem,CmemoryManagementDlg *pView);//用于分配一个内存块
bool BestNewMemory(memoryBlock *pMem,CmemoryManagementDlg *pView);
bool FreeMemory(int nID,CDC *pDC);//用于free一个内村块
void DrawMemoryStatus(CDC *pDC);//将内存的状态显示出来
void DrawPanel(CDC *pDC);
};