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

📄 memorydlg1.cpp

📁 一个比较详细的操作系统进程同步模拟的例子
💻 CPP
字号:
// MemoryDlg1.cpp : implementation file
//

#include "stdafx.h"
#include "process.h"
#include "MemoryDlg1.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMemoryDlg dialog


CMemoryDlg::CMemoryDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMemoryDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMemoryDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	
}


void CMemoryDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMemoryDlg)
	DDX_Control(pDX, IDC_LIST1, m_ListCtrl_Memory);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMemoryDlg, CDialog)
	//{{AFX_MSG_MAP(CMemoryDlg)
	ON_WM_ERASEBKGND()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMemoryDlg message handlers

BOOL CMemoryDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_ListCtrl_Memory.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
    m_ListCtrl_Memory.InsertColumn(0,_T("StartAddr"),LVCFMT_IMAGE|LVCFMT_LEFT);
	m_ListCtrl_Memory.InsertColumn(1,_T("Size"));
	m_ListCtrl_Memory.InsertColumn(2,_T("isUse"));
	m_ListCtrl_Memory.InsertColumn(3,_T("UserID "));
    for(int j=0;j<4;j++)
	{
	  m_ListCtrl_Memory.SetColumnWidth(j ,90);
	}
    m_ListCtrl_Memory.SetBkColor(RGB(170,127,183));
	m_ListCtrl_Memory.SetTextBkColor( RGB(170,127,183) );

	InitalPartiton();
	Show();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CMemoryDlg::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	CRect rcClient;
    CBrush m_brBkgnd;
    m_brBkgnd.CreateSolidBrush(RGB(166,196,234));//设置对话框背景颜色

    GetClientRect(&rcClient);

    pDC->FillRect(&rcClient,&m_brBkgnd);

    return TRUE;

	return CDialog::OnEraseBkgnd(pDC);
}



void CMemoryDlg::Show()
{
   	 m_ListCtrl_Memory.DeleteAllItems();

     for(int i = 0;i < MAXSIZE;i++)  
	 {
		 CString m_str ;
		 m_str = Memory[i].startAddr;
	     m_ListCtrl_Memory.InsertItem(i,m_str,0);    //插入分区起始地址
 
		 m_str.Format("%d",Memory[i].size);
		 m_ListCtrl_Memory.SetItemText(i,1,m_str);   //插入分区大小
		 
		 m_ListCtrl_Memory.SetItemText(i,2,"true");   //插入分区可用状态

         m_ListCtrl_Memory.SetItemText(i,3,"NULL");   //插入分区的用户ID
	 }
}


void CMemoryDlg::InitalPartiton()
{
  /* Memory[MAXSIZE]={{"",rand()%5 + 5,true},{"0adsf",rand()%5 + 5,true},
{"0rtee",rand()%5 + 5,true},{"0uiou",rand()%5 + 5,true},
{"0qeas",rand()%5 + 5,true},{"0jfgh",rand()%5 + 5,true},
{"0arfg",rand()%5 + 5,true},{"0sdfg",rand()%5 + 5,true},
{"0sfgg",rand()%5 + 5,true},{"0mnbv",rand()%5 + 5,true}*/
	::strcpy(Memory[0].startAddr , "0ewte");
	Memory[0].size = rand()%5 + 5;
	Memory[0].isUse = true;
	Memory[0].UserID = 0;

	::strcpy(Memory[1].startAddr , "0adsf");
	Memory[1].size = rand()%5 + 5;
	Memory[1].isUse = true;
	Memory[1].UserID = 0;
	::strcpy(Memory[2].startAddr , "0rtee");
	Memory[2].size = rand()%5 + 5;
	Memory[2].isUse = true;
	Memory[2].UserID = 0;


	::strcpy(Memory[3].startAddr , "0uiou");
	Memory[3].size = rand()%5 + 5;
	Memory[3].isUse = true;
	Memory[3].UserID = 0;

	::strcpy(Memory[4].startAddr , "0qeas");
	Memory[4].size = rand()%5 + 5;
	Memory[4].isUse = true;
	Memory[4].UserID = 0;

	::strcpy(Memory[5].startAddr , "0jfgh");
	Memory[5].size = rand()%5 + 5;
	Memory[5].isUse = true;
	Memory[5].UserID = 0;

	::strcpy(Memory[6].startAddr , "0sdfg");
	Memory[6].size = rand()%5 + 5;
	Memory[6].isUse = true;
	Memory[6].UserID = 0;

	::strcpy(Memory[7].startAddr , "0ahjp");
	Memory[7].size = rand()%5 + 5;
	Memory[7].isUse = true;
	Memory[7].UserID = 0;

	::strcpy(Memory[8].startAddr , "0pooi");
	Memory[8].size = rand()%5 + 5;
	Memory[8].isUse = true;
	Memory[8].UserID = 0;

	::strcpy(Memory[9].startAddr , "0prei");
	Memory[9].size = rand()%5 + 5;
	Memory[9].isUse = true;
	Memory[9].UserID = 0;


}

struct Partition * CMemoryDlg::GetPartition()
{
   return Memory;
}

⌨️ 快捷键说明

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