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

📄 pritimedlg.cpp

📁 本程序使用VC++编译调试
💻 CPP
字号:
// PriTimeDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Process.h"
#include "PriTimeDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPriTimeDlg dialog


CPriTimeDlg::CPriTimeDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPriTimeDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPriTimeDlg)
	m_pri = 0;
	m_time = 0;
	m_queryTime = 0;
	//}}AFX_DATA_INIT
	m_query=false;
	m_proNum=0;
	m_ok=false;
	m_filename="";
}


void CPriTimeDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPriTimeDlg)
	DDX_Control(pDX, IDC_LIST1, m_list);
	DDX_Text(pDX, IDC_Pri, m_pri);
	DDX_Text(pDX, IDC_RunTime, m_time);
	DDX_Text(pDX, IDC_QueryTime_EDIT, m_queryTime);
	DDV_MinMaxUInt(pDX, m_queryTime, 1, 100);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPriTimeDlg, CDialog)
	//{{AFX_MSG_MAP(CPriTimeDlg)
	ON_BN_CLICKED(IDC_Next, OnNext)
	ON_BN_CLICKED(IDC_OK, OnOk)
	ON_BN_CLICKED(IDC_Hand, OnHand)
	ON_BN_CLICKED(IDC_Random, OnRandom)
	ON_BN_CLICKED(IDC_ReadFromFile, OnReadFromFile)
	ON_BN_CLICKED(IDC_QueryTime, OnQueryTime)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPriTimeDlg message handlers
BOOL CPriTimeDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CDialog::CheckRadioButton(IDC_Hand,IDC_Random,IDC_Hand);

	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT| LVS_EX_GRIDLINES);//|LVS_SHOWSELALWAYS);
	m_list.InsertColumn(0,"进程号");
	m_list.InsertColumn(1,"优先数");
	m_list.InsertColumn(2,"运行时间");

	m_list.SetColumnWidth(0,60);
	m_list.SetColumnWidth(1,60);
	m_list.SetColumnWidth(2,80);
		
	GetDlgItem(IDC_Pri)->SetWindowText("");
	GetDlgItem(IDC_RunTime)->SetWindowText("");

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

void CPriTimeDlg::OnNext() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(m_proNum<=MAX)
	{
		m_pris[m_proNum]=m_pri;
		m_times[m_proNum]=m_time;
			
		CString strID,strPri,strTime;
		m_list.InsertItem(m_proNum,"id");

		strID.Format("%d",m_proNum+1);
		strPri.Format("%d",m_pris[m_proNum]);
		strTime.Format("%d",m_times[m_proNum]);

		m_list.SetItemText(m_proNum,0,strID);
		m_list.SetItemText(m_proNum,1,strPri);
		m_list.SetItemText(m_proNum,2,strTime);

		m_proNum++;
		GetDlgItem(IDC_Pri)->SetWindowText("");
		GetDlgItem(IDC_RunTime)->SetWindowText("");

		GetDlgItem(IDC_Pri)->SetFocus();
	}
	else
	{
		AfxMessageBox("进程数已经达到最大值");
	}

/*	for(int i=0;i<m_proNum;i++)
	{
		strID.Format("  %d",i+1);
		strPri.Format("  %d",m_pris[i]);
		strTime.Format("  %d",m_times[i]);

		m_list.SetItemText(i,1,strID);
		m_list.SetItemText(i,2,strPri);
		m_list.SetItemText(i,3,strTime);

	}
*/
}
#include"stdlib.h"
void CPriTimeDlg::OnOk() 
{
	// TODO: Add your control notification handler code here
	if(m_proNum > 0)
	{
		m_ok=true;
		if(m_query)
		{
			CString s;
			GetDlgItem(IDC_QueryTime_EDIT)->GetWindowText(s);
			m_queryTime=atoi(s);
		}
		SendMessage(WM_CLOSE);
	}
	else
	{
		AfxMessageBox("请设置进程参数!");
	}
}

void CPriTimeDlg::OnHand() 
{
	// TODO: Add your control notification handler code here
//	m_hand=true;
	GetDlgItem(IDC_Pri)->EnableWindow(TRUE);
	GetDlgItem(IDC_RunTime)->EnableWindow(TRUE);
	GetDlgItem(IDC_Next)->EnableWindow(TRUE);
	m_list.DeleteAllItems();
	m_proNum=0;

}
//#include<time.h>
void CPriTimeDlg::OnRandom() 
{
	// TODO: Add your control notification handler code here
	srand(time(0));
	GetDlgItem(IDC_Pri)->EnableWindow(false);
	GetDlgItem(IDC_RunTime)->EnableWindow(false);
	GetDlgItem(IDC_Next)->EnableWindow(false);

	m_proNum=rand()%3+3;
	int i=0;
	for(; i< m_proNum; i++)
	{
		m_pris[i]=rand()%10+10;
		m_times[i]=rand()%5+2;
	}
	m_list.DeleteAllItems();

	CString strID,strPri,strTime;
	for(i=0;i<m_proNum;i++)
	{	
		m_list.InsertItem(m_proNum,"id");

		strID.Format("%d",i+1);
		strPri.Format("%d",m_pris[i]);
		strTime.Format("%d",m_times[i]);

		m_list.SetItemText(i,0,strID);
		m_list.SetItemText(i,1,strPri);
		m_list.SetItemText(i,2,strTime);
	}

}

void CPriTimeDlg::OnReadFromFile() 
{
	// TODO: Add your control notification handler code here
	
	GetDlgItem(IDC_Pri)->EnableWindow(false);
	GetDlgItem(IDC_RunTime)->EnableWindow(false);
	GetDlgItem(IDC_Next)->EnableWindow(false);

	m_filename.Empty();
	m_filename="data.txt";
	CStdioFile file;
	if( ! file.Open("data.txt",CFile::modeRead) )
	{
		AfxMessageBox("文件打开失败 !");
		return;
	}
	CString strData;
	int pri,tm;

	while( m_proNum <= MAX && file.ReadString(strData) )
	{

		sscanf(strData,"%d%d",&pri,&tm);
		m_pris[m_proNum]=pri;
		m_times[m_proNum]=tm;
			
		CString strID,strPri,strTime;
		m_list.InsertItem(m_proNum,"id");

		strID.Format("%d",m_proNum+1);
		strPri.Format("%d",m_pris[m_proNum]);
		strTime.Format("%d",m_times[m_proNum]);

		m_list.SetItemText(m_proNum,0,strID);
		m_list.SetItemText(m_proNum,1,strPri);
		m_list.SetItemText(m_proNum,2,strTime);

		m_proNum++;
	}
	file.Close();
}

void CPriTimeDlg::OnQueryTime() 
{
	// TODO: Add your control notification handler code here
	m_query=!m_query; 
	GetDlgItem(IDC_QueryTime_EDIT)->EnableWindow(m_query);
}

⌨️ 快捷键说明

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