📄 setdialog.cpp
字号:
// SetDialog.cpp : implementation file
//
#include "stdafx.h"
#include "ProcessManager.h"
#include "SetDialog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSetDialog dialog
CSetDialog::CSetDialog(CWnd* pParent /*=NULL*/)
: CDialog(CSetDialog::IDD, pParent)
{
//{{AFX_DATA_INIT(CSetDialog)
m_nprio = 0;
m_ntime = 0;
m_npid = 0;
//}}AFX_DATA_INIT
uState = MODE_NOTHING;
strWinName = _T("未命名");
}
void CSetDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSetDialog)
DDX_Text(pDX, IDC_EDTPRIO, m_nprio);
DDX_Text(pDX, IDC_EDTTIME, m_ntime);
DDX_Text(pDX, IDC_EDTPID, m_npid);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSetDialog, CDialog)
//{{AFX_MSG_MAP(CSetDialog)
ON_BN_CLICKED(IDOK, OnDoAction)
//}}AFX_MSG_MAP
ON_MESSAGE(UM_RECEIVEINFO, OnChangeMode)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSetDialog message handlers
void CSetDialog::OnDoAction()
{
// TODO: Add your control notification handler code here
CString str = _T("");
CString strTemp;
ProInfo * pi = NULL;
//UpdateData();
switch(uState)
{
case MODE_CREATE:
if(str.IsEmpty())
((CEdit *)this->GetDlgItem(IDC_EDTPID))->GetWindowText(str);
((CEdit *)this->GetDlgItem(IDC_EDTPID))->SetWindowText("0");
UpdateData();
//::AfxMessageBox(str);
if(0 == str.Compare("0"))
{
MessageBox("请输入进程名字!\t\t","Error");
}
else if(m_nprio<1 || (m_nprio>10))
{
MessageBox("进程优先级取值介于 1-10 之间,请重新输入!","Error");
((CEdit *)this->GetDlgItem(IDC_EDTPID))->SetWindowText(str);
}else if(m_ntime<50 || (m_ntime>500))
{
MessageBox("进程运行时间取值介于 50-500 之间,请重新输入!","Error");
((CEdit *)this->GetDlgItem(IDC_EDTPID))->SetWindowText(str);
}else
{
pi = new ProInfo(m_nprio, 0, m_ntime);
ASSERT(pi!=NULL);
pi->strname = str;
//传递消息
::SendMessage(::AfxGetMainWnd()->m_hWnd,UM_SENDINFO,(WPARAM)pi,MODE_CREATE);
CDialog::OnOK();
}
break;
case MODE_KILL:
UpdateData();
if(m_npid<1 || (m_npid>255))
{
MessageBox("进程ID取值介于 1-255 之间,请重新输入!","Error");
}else
{
pi = new ProInfo(0,m_npid,0);
ASSERT(pi!=NULL);
//传递消息
::SendMessage(::AfxGetMainWnd()->m_hWnd,UM_SENDINFO,(WPARAM)pi,MODE_KILL);
CDialog::OnOK();
}
break;
case MODE_SUPPOND:
UpdateData();
if(m_npid<1 || (m_npid>255))
{
MessageBox("进程ID取值介于 1-255 之间,请重新输入!","Error");
}else
{
pi = new ProInfo(0,0,m_npid);
ASSERT(pi!=NULL);
//传递消息
::SendMessage(::AfxGetMainWnd()->m_hWnd,UM_SENDINFO,(WPARAM)pi,MODE_SUPPOND);
CDialog::OnOK();
}
break;
case MODE_MODIFY:
UpdateData();
if(m_npid<1 || (m_npid>255))
{
MessageBox("进程ID取值介于 1-255 之间,请重新输入!","Error");
}else if(m_nprio<1 || (m_nprio>10))
{
MessageBox("进程优先级取值介于 1-10 之间,请重新输入!","Error");
}else
{
pi = new ProInfo(m_nprio, m_npid, m_ntime);
ASSERT(pi!=NULL);
//传递消息
::SendMessage(::AfxGetMainWnd()->m_hWnd,UM_SENDINFO,(WPARAM)pi,MODE_MODIFY);
CDialog::OnOK();
}
break;
default:
break;
}
}
BOOL CSetDialog::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Add your specialized code here and/or call the base class
cs.style = WS_TILED;
cs.lpszName = strWinName;
return CDialog::PreCreateWindow(cs);
}
LRESULT CSetDialog::OnChangeMode(WPARAM wparam, LPARAM lparam)
{
ASSERT(lparam!=NULL);
uState = (UINT)lparam;
switch(uState)
{
case MODE_CREATE: //修改显示
((CStatic*)this->GetDlgItem(IDC_PID))->SetWindowText("进程名字:");
((CStatic*)this->GetDlgItem(IDC_RANGA))->ShowWindow(SW_HIDE);
strWinName = _T("创建进程窗口");
break;
case MODE_KILL: //只显示pid窗口
this->GetDlgItem(IDC_RANGB)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_RANGC)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_EDTPRIO)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_EDTTIME)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_PRIO)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_TIME)->ShowWindow(SW_HIDE);
strWinName = _T("杀死进程窗口");
break;
case MODE_SUPPOND: //只显示pid窗口
this->GetDlgItem(IDC_RANGB)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_RANGC)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_EDTPRIO)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_EDTTIME)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_PRIO)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_TIME)->ShowWindow(SW_HIDE);
strWinName = _T("挂起进程窗口");
break;
case MODE_MODIFY:
this->GetDlgItem(IDC_RANGC)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_EDTTIME)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_TIME)->ShowWindow(SW_HIDE);
strWinName = _T("修改进程窗口");
break;
default:
break;
}
this->SetWindowText(strWinName); //设置窗口标题
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -