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

📄 oppview.cpp

📁 模拟操作系统存储功能的软件可以供教学研究
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	}

}

void COppView::DoPage()
{
	int i, j, k, num, no;
	CPageDlg dlg;
	CString word;
			
	CClientDC dc(this);
	CPen pen;
	CBrush brush;
	pen.CreatePen(PS_SOLID, 1, RGB(0, 125, 255));
	brush.CreateSolidBrush(RGB(0, 0, 255));
	CPen *oldpen = dc.SelectObject(&pen);
	dc.SetTextColor(RGB(0, 125, 255));

	if(dlg.DoModal() == IDOK){
		if(dlg.sign == 1){
			num = dlg.m_nNum;
			dc.SetTextColor(RGB(255,255,255));
			loop_1 = 62;	loop_2 = 60;

			for(i=0; i<8; i++){
				if(Page[i].num == num){
					for(j=0; j<Page[i].page; j++){
						word.Format("%d",no = j);
						dc.TextOut(490, Page[i].loop1+20*j, word );
						word.Format("%d",no = j + 2);
						dc.TextOut(575, Page[i].loop1+20*j, word );
						dc.TextOut(625, Page[i].loop1+20*j, "已分配");		//表格填充
					}
					for(j=Page[i].local, k=0; j<Page[i].local+Page[i].page; j++){
						dc.TextOut(Frag[j+2].x, Frag[j+2].y, 92);
						FillPage(Page[i].loop2 + 20 * k, 9);					//内存填充
						Frag[j].sign = 0;
						k++;}//break;
				}//else{	MessageBox("你输入的作业不存在!");	break;}
			}
		}
		if(dlg.sign == 2){
			Page[i_Status].num = dlg.m_nNum;
			Page[i_Status].page = dlg.m_nPage;
			Page[i_Status + 1].loop1 = Page[i_Status].loop1 + 20 * Page[i_Status].page;
			Page[i_Status + 1].loop2 = Page[i_Status].loop2 + 20 * Page[i_Status].page;
			
			loop_1 = 62;	loop_2 = 60;
			sign_1 += sign_2;
			if(sign_1 <= 144){
				for(j=sign_1; j<sign_1+Page[i_Status].page; j++){
					loop_1 += 20 * sign_1; 
					word.Format("%d",no = j - 2 );
					dc.TextOut(490, loop_1 + 20*(j-sign_1), word );
					word.Format("%d",no = j );
					dc.TextOut(575, loop_1 + 20*(j-sign_1), word );
					dc.TextOut(625, loop_1 + 20*(j-sign_1), "已分配");
					loop_1 = 62;
				}
				for(i=sign_1; i<sign_1+Page[i_Status].page; i++){
					loop_2 += 20 * i;	
					dc.TextOut(Frag[i].x, Frag[i].y, 92);
					for(j=1; j<=9; j++){
						dc.MoveTo(321, loop_2 + 2*j);
						dc.LineTo(418, loop_2 + 2*j);
					}
					loop_2 = 60;
					Frag[i].sign = 1;
				}

				sign_2 = Page[i_Status].page;

				Page[i_Status+1].local = Page[i_Status].local + Page[i_Status].page; 
				i_Status++;
			}
			else{	MessageBox("error!");}
		}
	}

}

void COppView::MoveWork()
{
	int i,k,name;
	CString word;
	CMoveWork mov;
	CClientDC dc(this);
	CPen pen;
	CBrush brush;
	pen.CreatePen(PS_SOLID, 1, RGB(0,125,255));
	brush.CreateSolidBrush(RGB(255,255,255));
	CPen *oldpen = dc.SelectObject(&pen);
	dc.SetTextColor(RGB(0,125,255));
	
	if(mov.DoModal() == IDOK){
		if(mov.sign == 1){	
			Mov[i_Sign].name = mov.m_name;
			Mov[i_Sign].size = mov.m_size;
			Mov[i_Sign].sign = i_Sign + 1;
			Mov[i_Sign].start = start;
			Mov[i_Sign + 1].begin = Mov[i_Sign].begin + Mov[i_Sign].size;
			
				
			word.Format("%d",k = Mov[i_Sign].name);
			dc.TextOut(300, 117+30*i_Sign, word);
			word.Format("%d",k = Mov[i_Sign].size);
			dc.TextOut(375, 117+30*i_Sign, word);	
			word.Format("%d",k = Mov[i_Sign].begin);
			dc.TextOut(450, 117+30*i_Sign, word);
			dc.TextOut(525, 117+30*i_Sign, "已分配");

			for(i=0; i<Mov[i_Sign].size; i++){
				dc.MoveTo(101, start+2*i);	
				dc.LineTo(198, start+2*i);
			}

			start = start + 2 * Mov[i_Sign].size;
			i_Sign++;
		}
		if(mov.sign == 2){
			name = mov.m_name;

			for(i=0; i<i_Sign; i++){
				if(name == Mov[i].name){
					FillMov(Mov[i].start, Mov[i].size);

					switch(Mov[i].sign)
					{
					case 1:	Fill_1();	break;
					case 2:	Fill_2();	break;
					case 3: Fill_3();	break;
					case 4: Fill_4();	break;
					}
				}
			}
		}

	}

}

////////////////////////////////////////////////////////////////////////////
// Draw Portion
void COppView::FillPart_1()
{
	CClientDC dc(this);
	CBrush brush;
	brush.CreateSolidBrush(RGB(255,255,255));
	dc.FloodFill(110, 90, RGB(0,0,0));
	dc.FloodFill(625, 117, RGB(0,0,0));
	dc.FloodFill(530, 117, RGB(0,0,0));
}

void COppView::FillPart_2()
{
	CClientDC dc(this);
	CBrush brush;
	brush.CreateSolidBrush(RGB(255,255,255));
	dc.FloodFill(110, 135, RGB(0,0,0));
	dc.FloodFill(625, 147, RGB(0,0,0));
	dc.FloodFill(530, 147, RGB(0,0,0));		
}

void COppView::FillPart_3()
{	
	CClientDC dc(this);
	CBrush brush;
	brush.CreateSolidBrush(RGB(255,255,255));
	dc.FloodFill(110, 190, RGB(0,0,0));
	dc.FloodFill(625, 177, RGB(0,0,0));
	dc.FloodFill(530, 177, RGB(0,0,0));	
}

void COppView::FillPart_4()
{
	CClientDC dc(this);
	CBrush brush;
	brush.CreateSolidBrush(RGB(255,255,255));
	dc.FloodFill(110, 280, RGB(0,0,0));
	dc.FloodFill(625, 207, RGB(0,0,0));
	dc.FloodFill(530, 207, RGB(0,0,0));	
}
void COppView::ChartForm()
{	
	CClientDC dc(this);
	CPen pen;
	CBrush brush;
	pen.CreatePen(PS_SOLID,2,RGB(0,0,0));
	brush.CreateSolidBrush(RGB(0,125,255));
	CPen *oldpen = dc.SelectObject(&pen);

	dc.Rectangle(100, 50, 200, 390);
	dc.MoveTo(100, 80);			dc.LineTo(199, 80); 
	dc.MoveTo(100, 125);		dc.LineTo(199, 125);
	dc.MoveTo(100, 185);		dc.LineTo(199, 185);
	dc.MoveTo(100, 275);		dc.LineTo(199, 275);

	dc.Rectangle(280, 80, 660, 230);
	dc.MoveTo(280, 110);	dc.LineTo(659, 110);
	dc.MoveTo(280, 140);	dc.LineTo(659, 140);
	dc.MoveTo(280, 170);	dc.LineTo(659, 170);
	dc.MoveTo(280, 200);	dc.LineTo(659, 200);
	dc.MoveTo(340, 80);		dc.LineTo(340, 229);
	dc.MoveTo(420, 80);		dc.LineTo(420, 229);
	dc.MoveTo(500, 80);		dc.LineTo(500, 229);
	dc.MoveTo(600, 80);		dc.LineTo(600, 229);

	CBrush *oldbrush = dc.SelectObject(&brush);	
	dc.FloodFill(110, 60, RGB(0,0,0));

	dc.SetTextColor(RGB(255,125,0));	
	dc.SetBkColor(RGB(0,125,255));
	dc.TextOut(118, 57, "操作系统");
	dc.SetBkColor(RGB(255,255,255));
	dc.TextOut(80, 45, "0");
	dc.TextOut(70, 75, "20K");
	dc.TextOut(70, 120, "28K");
	dc.TextOut(70, 180, "60K");
	dc.TextOut(65, 270, "124K");
	dc.TextOut(65, 380, "256K");
	
	dc.TextOut(295, 87, "区号");
	dc.TextOut(350, 87, "分区长度");
	dc.TextOut(430, 87, "起始地址");
	dc.TextOut(535, 87, "状态");
	dc.TextOut(608, 87, "作业号");
	dc.SetTextColor(RGB(0,0,0));
	dc.TextOut(305, 117, '1'); dc.TextOut(305,147, '2'); 
	dc.TextOut(305, 177, '3'); dc.TextOut(305, 207, '4');
	dc.TextOut(372, 117, "8K");	dc.TextOut(368, 147, "32K");
	dc.TextOut(368, 177, "64K"); dc.TextOut(364, 207, "132K");
	dc.TextOut(448, 117, "20K");	dc.TextOut(448, 147, "28K");
	dc.TextOut(448, 177, "60K"); dc.TextOut(444, 207, "124K");

	dc.SelectObject(oldpen);
	dc.SelectObject(oldbrush);

}

void COppView::SectionChart()
{
	CClientDC dc(this);
	CPen pen;
	CBrush brush;
	pen.CreatePen(PS_SOLID,2,RGB(0,0,0));
	brush.CreateSolidBrush(RGB(0,125,255));
	CPen *oldpen = dc.SelectObject(&pen);
	int i,j,k;

	for(i=0; i<=16; i++){
		k = 60 + 20*i;
		dc.MoveTo(99,k);
		dc.LineTo(260,k);
	}
	for(j=0; j<=8; j++){
		k = 100 + 20*j;
		dc.MoveTo(k,60);
		dc.LineTo(k,380);
	}

	dc.Rectangle(320, 60, 420, 380);

	for(i=0; i<=16; i++){
		k = 60 + 20*i;
		dc.MoveTo(320,k);
		dc.LineTo(419,k);
	}

	dc.Rectangle(460, 80, 680, 340);
	dc.MoveTo(460, 100);	dc.LineTo(679, 100);
	dc.MoveTo(460, 120);	dc.LineTo(679, 120);
	dc.MoveTo(460, 140);	dc.LineTo(679, 140);
	dc.MoveTo(460, 160);	dc.LineTo(679, 160);
	dc.MoveTo(460, 180);	dc.LineTo(679, 180);
	dc.MoveTo(460, 200);	dc.LineTo(679, 200);
	dc.MoveTo(460, 220);	dc.LineTo(679, 220);
	dc.MoveTo(460, 240);	dc.LineTo(679, 240);
	dc.MoveTo(460, 260);	dc.LineTo(679, 260);
	dc.MoveTo(460, 280);	dc.LineTo(679, 280);
	dc.MoveTo(460, 300);	dc.LineTo(679, 300);
	dc.MoveTo(460, 320);	dc.LineTo(679, 320);

	dc.MoveTo(460, 80);		dc.LineTo(460, 339);
	dc.MoveTo(540, 80);		dc.LineTo(540, 339);
	dc.MoveTo(620, 80);		dc.LineTo(620, 339);

	CBrush *oldbrush = dc.SelectObject(&brush);	

	dc.SetTextColor(RGB(255,125,0));	
	dc.SetBkColor(RGB(0,125,255));
	dc.SetBkColor(RGB(255,255,255));
	dc.TextOut(80, 60, "0");	dc.TextOut(105, 40, "0");
	dc.TextOut(80, 80, "1");	dc.TextOut(125, 40, "1");
	dc.TextOut(80, 100, "2");	dc.TextOut(145, 40, "2");
	dc.TextOut(80, 120, "3");	dc.TextOut(165, 40, "3");
	dc.TextOut(80, 140, "4");	dc.TextOut(185, 40, "4");
	dc.TextOut(80, 160, "5");	dc.TextOut(205, 40, "5");	
	dc.TextOut(80, 180, "6");	dc.TextOut(225, 40, "6");
	dc.TextOut(80, 200, "7");	dc.TextOut(245, 40, "7");
	dc.TextOut(80, 220, "8");
	dc.TextOut(80, 240, "9");
	dc.TextOut(75, 260, "10");
	dc.TextOut(75, 280, "11");
	dc.TextOut(75, 300, "12");
	dc.TextOut(75, 320, "13");
	dc.TextOut(75, 340, "14");
	dc.TextOut(75, 360, "15");
	dc.TextOut(300, 60, "0");	
	dc.TextOut(300, 80, "1");	
	dc.TextOut(300, 100, "2");
	dc.TextOut(300, 120, "3");	
	dc.TextOut(300, 140, "4");	
	dc.TextOut(300, 160, "5");		
	dc.TextOut(300, 180, "6");	
	dc.TextOut(300, 200, "7");	
	dc.TextOut(300, 220, "8");
	dc.TextOut(300, 240, "9");
	dc.TextOut(295, 260, "10");
	dc.TextOut(295, 280, "11");
	dc.TextOut(295, 300, "12");
	dc.TextOut(295, 320, "13");
	dc.TextOut(295, 340, "14");
	dc.TextOut(295, 360, "15");
	
	dc.TextOut(475, 82, "进程名");
	dc.TextOut(550, 82, "分配页面");
	dc.TextOut(635, 82, "状态");

	dc.TextOut(Frag[0].x, Frag[0].y, 92);
	dc.TextOut(Frag[1].x, Frag[1].y, 92);
	dc.FloodFill(330, 70, RGB(0, 0, 0));
	dc.FloodFill(330, 90, RGB(0, 0, 0));

	dc.SelectObject(oldpen);
	dc.SelectObject(oldbrush);
}

void COppView::MoveChart()
{
	CClientDC dc(this);
	CPen pen;
	CBrush brush;
	pen.CreatePen(PS_SOLID,2,RGB(0,0,0));
	brush.CreateSolidBrush(RGB(0,125,255));
	CPen *oldpen = dc.SelectObject(&pen);

	dc.Rectangle(100, 50, 200, 390);
	dc.MoveTo(100, 80);			dc.LineTo(199, 80); 

	dc.Rectangle(280, 80, 600, 230);
	dc.MoveTo(280, 110);	dc.LineTo(599, 110);
	dc.MoveTo(280, 140);	dc.LineTo(599, 140);
	dc.MoveTo(280, 170);	dc.LineTo(599, 170);
	dc.MoveTo(280, 200);	dc.LineTo(599, 200);

	dc.MoveTo(340, 80);		dc.LineTo(340, 229);
	dc.MoveTo(420, 80);		dc.LineTo(420, 229);
	dc.MoveTo(500, 80);		dc.LineTo(500, 229);


	CBrush *oldbrush = dc.SelectObject(&brush);	
	dc.FloodFill(110, 60, RGB(0,0,0));

	dc.SetTextColor(RGB(255,125,0));	
	dc.SetBkColor(RGB(0,125,255));
	dc.TextOut(118, 57, "操作系统");
	dc.SetBkColor(RGB(255,255,255));
	dc.TextOut(80, 45, "0");
	dc.TextOut(70, 75, "16K");
	dc.TextOut(70, 120, "40K");
	dc.TextOut(70, 195, "80K");
	dc.TextOut(65, 270, "120K");
	dc.TextOut(65, 380, "180K");

	dc.TextOut(287, 87, "作业号");
	dc.TextOut(350, 87, "分区长度");
	dc.TextOut(430, 87, "起始地址");
	dc.TextOut(535, 87, "状态");

	dc.SelectObject(oldpen);
	dc.SelectObject(oldbrush);

}

void COppView::FillMov(int x, int y)
{
	CClientDC dc(this);
	CPen pen;
	pen.CreatePen(PS_SOLID, 1, RGB(255,255,255));
	CPen *oldpen = dc.SelectObject(&pen);
	
	int i;
	for(i=0; i<y; i++){
		dc.MoveTo(101, x+2+2*i);
		dc.LineTo(198, x+2+2*i);
	}

	dc.SelectObject(oldpen);
}

void COppView::FillPage(int x, int y)
{
	CClientDC dc(this);
	CPen pen;
	pen.CreatePen(PS_SOLID, 1, RGB(255,255,255));
	CPen *oldpen = dc.SelectObject(&pen);
	
	int i;
	for(i=1; i<=y; i++){
		dc.MoveTo(321, x+2*i);
		dc.LineTo(418, x+2*i);
	}

	dc.SelectObject(oldpen);
}

void COppView::Fill_1()
{
	CClientDC dc(this);
	CBrush brush;
	brush.CreateSolidBrush(RGB(255,255,255));
	dc.FloodFill(290, 115, RGB(0,0,0));
	dc.FloodFill(350, 115, RGB(0,0,0));
	dc.FloodFill(430, 115, RGB(0,0,0));
	dc.FloodFill(510, 115, RGB(0,0,0));
}

void COppView::Fill_2()
{
	CClientDC dc(this);
	CBrush brush;
	brush.CreateSolidBrush(RGB(255,255,255));
	dc.FloodFill(290, 145, RGB(0,0,0));
	dc.FloodFill(350, 145, RGB(0,0,0));
	dc.FloodFill(430, 145, RGB(0,0,0));
	dc.FloodFill(510, 145, RGB(0,0,0));
}

void COppView::Fill_3()
{
	CClientDC dc(this);
	CBrush brush;
	brush.CreateSolidBrush(RGB(255,255,255));
	dc.FloodFill(290, 175, RGB(0,0,0));
	dc.FloodFill(350, 175, RGB(0,0,0));
	dc.FloodFill(430, 175, RGB(0,0,0));
	dc.FloodFill(510, 175, RGB(0,0,0));
}

void COppView::Fill_4()
{
	CClientDC dc(this);
	CBrush brush;
	brush.CreateSolidBrush(RGB(255,255,255));
	dc.FloodFill(290, 205, RGB(0,0,0));
	dc.FloodFill(350, 205, RGB(0,0,0));
	dc.FloodFill(430, 205, RGB(0,0,0));
	dc.FloodFill(510, 205, RGB(0,0,0));
}





⌨️ 快捷键说明

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