📄 jcbdlg.cpp
字号:
// JCBDlg.cpp : implementation file
//
#include "stdafx.h"
#include "JCB.h"
#include "JCBDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern int StartTime;
extern int Jobs;
extern TJCB Tjobs[];
extern int Queue[];
extern int Stack[];
extern int rTime;
extern int RunTime;
/////////////////////////////////////////////////////////////////////////////
// CJCBDlg dialog
CJCBDlg::CJCBDlg(CWnd* pParent /*=NULL*/)
: CDialog(CJCBDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CJCBDlg)
m_ReqTime = 0;
m_InputHour = 0;
m_InputMin = 0;
m_ReqMEM = 0;
m_ReqPrinter = 0;
//}}AFX_DATA_INIT
}
void CJCBDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CJCBDlg)
DDX_Control(pDX, IDC_SLIDER_R, m_SliderR);
DDX_Control(pDX, IDC_SLIDER_G, m_SliderG);
DDX_Control(pDX, IDC_SLIDER_B, m_SliderB);
DDX_Control(pDX, IDC_SLIDER_PRT, m_SliderPRT);
DDX_Control(pDX, IDC_SLIDER_MEM, m_SliderMEM);
DDX_Control(pDX, IDC_LIST1, m_JobList);
DDX_Text(pDX, IDC_EDIT_REQTime, m_ReqTime);
DDX_Text(pDX, IDC_EDIT_IM, m_InputHour);
DDX_Text(pDX, IDC_EDIT_IH, m_InputMin);
DDX_Slider(pDX, IDC_SLIDER_MEM, m_ReqMEM);
DDX_Slider(pDX, IDC_SLIDER_PRT, m_ReqPrinter);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CJCBDlg, CDialog)
//{{AFX_MSG_MAP(CJCBDlg)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_DEL, OnDel)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_MEM, OnCustomdrawSliderMem)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_PRT, OnCustomdrawSliderPrt)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_R, OnCustomdrawSliderR)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_G, OnCustomdrawSliderG)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_B, OnCustomdrawSliderB)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CJCBDlg message handlers
void CJCBDlg::OnAdd()
{
// TODO: Add your control notification handler code here
LV_ITEM lvitem;
CString sSN,sTime,sReqTime,sReqMEM,sReqPrt,sColor;
if(nItem==0)
lTime=0;
else
lTime=Tjobs[nItem-1].InputTime;
lvitem.pszText="";
lvitem.mask=LVIF_TEXT;
lvitem.iSubItem=0;
//读出数据写入到list中
m_InputHour=GetDlgItemInt(IDC_EDIT_IH,NULL,TRUE);
m_InputMin=GetDlgItemInt(IDC_EDIT_IM,NULL,TRUE);
if (m_InputMin>=10)
sTime.Format ("%d:%d",m_InputHour,m_InputMin);
else
sTime.Format ("%d:0%d",m_InputHour,m_InputMin);
Tjobs[nItem].InputTime=m_InputHour*60+m_InputMin;
Tjobs[nItem].InputHour=Tjobs[nItem].InputTime/60;
Tjobs[nItem].InputMinute =Tjobs[nItem].InputTime%60;
if (m_InputMin<0||m_InputMin>60)
{
AfxMessageBox(_T("InputError"));
return;
}
if (m_InputHour<0||m_InputHour>24)
{
AfxMessageBox(_T("InputError"));
return;
}
if (m_InputHour<lTime/60)
{
AfxMessageBox(_T("InputError"));
return;
}
if (m_InputHour==lTime/60&&m_InputMin<=lTime%60)
{
AfxMessageBox(_T("InputError"));
return;
}
m_ReqTime=GetDlgItemInt(IDC_EDIT_REQTime,NULL,TRUE);
sReqTime.Format("%d分钟",m_ReqTime);
Tjobs[nItem].ReqTime=m_ReqTime;
if (m_ReqTime<=0||m_ReqTime>120)
{
AfxMessageBox(_T("InputError"));
return;
}
m_JobList.InsertItem(&lvitem);
sSN.Format ("%d",nItem+1);
m_JobList.SetItemText(nItem,0,_T(sSN));
Tjobs[nItem].NO=nItem+1;
m_ReqMEM=m_SliderMEM.GetPos();
sReqMEM.Format("%dKB",m_ReqMEM);
Tjobs[nItem].ReqMEM=m_ReqMEM;
m_ReqPrinter=m_SliderPRT.GetPos();
sReqPrt.Format("%d台",m_ReqPrinter);
Tjobs[nItem].ReqPrinter=m_ReqPrinter;
Tjobs[nItem].ColorRGB=(m_SliderR.GetPos()<<16)+(m_SliderG.GetPos()<<8)+m_SliderB.GetPos();
sColor.Format("%x",Tjobs[nItem].ColorRGB);
m_JobList.SetItemText(nItem,1,_T(sTime));
m_JobList.SetItemText(nItem,2,_T(sReqTime));
m_JobList.SetItemText(nItem,3,_T(sReqMEM));
m_JobList.SetItemText(nItem,5,_T(sColor));
m_JobList.SetItemText(nItem,4,_T(sReqPrt));
nItem++;
Jobs=nItem;
}
void CJCBDlg::OnDel()
{
// TODO: Add your control notification handler code here
if(nItem==0)
return;
nItem--;
m_JobList.DeleteItem(nItem);
Jobs=nItem;
}
void CJCBDlg::OnOK()
{
// TODO: Add extra validation here
CDialog::OnOK();
}
BOOL CJCBDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
// char msg[50];
// sprintf (msg,"Jobs=%d",Jobs);
// AfxMessageBox(_T(msg));
//设置list控件的文字和背景颜色
m_JobList.SetBkColor(RGB(240,247,233));
m_JobList.SetTextBkColor(RGB(240,247,233));
//清空list控件的数据
for(int delcolumn=100;delcolumn>=0;delcolumn--)
m_JobList.DeleteColumn(delcolumn);
//设置list对话框的列
DWORD dwStyle;
RECT rect;
LV_COLUMN lvc;
dwStyle = m_JobList.GetStyle();
dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT|LVS_SHOWSELALWAYS ;
m_JobList.SetExtendedStyle(dwStyle);
m_JobList.GetClientRect(&rect);
lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT;
lvc.fmt=LVCFMT_LEFT;
lvc.iSubItem = 0;
lvc.pszText = _T("作业序号");
lvc.cx = 110;
m_JobList.InsertColumn(1,&lvc);
lvc.iSubItem = 1;
lvc.pszText = _T("进输入井时间");
lvc.cx = 110;
m_JobList.InsertColumn(2,&lvc);
lvc.iSubItem = 2;
lvc.pszText = _T("要求计算时间");
lvc.cx = 110;
m_JobList.InsertColumn(3,&lvc);
lvc.iSubItem = 3;
lvc.pszText = _T("需要主存量");
lvc.cx = 110;
m_JobList.InsertColumn(4,&lvc);
lvc.iSubItem = 4;
lvc.pszText = _T("申请打印机数");
lvc.cx = 110;
m_JobList.InsertColumn(5,&lvc);
lvc.iSubItem = 5;
lvc.pszText = _T("颜色");
lvc.cx = 60;
m_JobList.InsertColumn(6,&lvc);
int i,j;
i=0;
CString sSN,sTime,sReqTime,sReqMEM,sReqPrt,sColor;
LV_ITEM lvitem;
lvitem.pszText="";
lvitem.mask=LVIF_TEXT;
lvitem.iSubItem=0;
while(i<Jobs)
{
m_JobList.InsertItem(&lvitem);
//读出数据写入到list中
sSN.Format ("%d",i+1);
m_JobList.SetItemText(i,0,_T(sSN));
if ((j=Tjobs[i].InputTime%60)>=10)
sTime.Format ("%d:%d",Tjobs[i].InputTime/60,j);
else
sTime.Format ("%d:0%d",Tjobs[i].InputTime/60,j);
m_JobList.SetItemText(i,1,(LPCTSTR)sTime);
sReqTime.Format("%d分钟",Tjobs[i].ReqTime);
m_JobList.SetItemText(i,2,_T(sReqTime));
sReqMEM.Format("%dKB",Tjobs[i].ReqMEM);
m_JobList.SetItemText(i,3,_T(sReqMEM));
sReqPrt.Format("%d台",Tjobs[i].ReqPrinter);
m_JobList.SetItemText(i,4,_T(sReqPrt));
sColor.Format("%x",Tjobs[i].ColorRGB);
m_JobList.SetItemText(i,5,_T(sColor));
i++;
}
nItem=i;
lTime=Tjobs[nItem-1].InputTime;
//
m_SliderMEM.SetRange(1,100,FALSE);
m_SliderMEM.SetTicFreq(10);
m_SliderPRT.SetRange(0,4,FALSE);
m_SliderR.SetRange(0,255,FALSE);
m_SliderR.SetTicFreq (20);
m_SliderG.SetRange(0,255,FALSE);
m_SliderG.SetTicFreq (20);
m_SliderB.SetRange(0,255,FALSE);
m_SliderB.SetTicFreq (20);
SetWindowText(_T("编辑窗口"));
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CJCBDlg::OnCustomdrawSliderMem(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CString msg;
msg.Format("需求主存量:%d",m_SliderMEM.GetPos());
SetDlgItemText(IDC_STATIC_MEM,_T(msg));
*pResult = 0;
}
void CJCBDlg::OnCustomdrawSliderPrt(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CString msg;
msg.Format("申请打印机数:%d",m_SliderPRT.GetPos());
SetDlgItemText(IDC_STATIC_PRT,_T(msg));
*pResult = 0;
}
void CJCBDlg::OnCustomdrawSliderR(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CString msg;
msg.Format("颜色:%x,%x,%x",m_SliderR.GetPos(),m_SliderG.GetPos(),m_SliderB.GetPos());
SetBkColor(m_SliderR.GetDC()->GetSafeHdc(),0x033333);
SetDlgItemText(IDC_STATIC_C,_T(msg));
*pResult = 0;
}
void CJCBDlg::OnCustomdrawSliderG(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CString msg;
msg.Format("颜色:%x,%x,%x",m_SliderR.GetPos(),m_SliderG.GetPos(),m_SliderB.GetPos());
SetDlgItemText(IDC_STATIC_C,_T(msg));
*pResult = 0;
}
void CJCBDlg::OnCustomdrawSliderB(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CString msg;
msg.Format("颜色:%x,%x,%x",m_SliderR.GetPos(),m_SliderG.GetPos(),m_SliderB.GetPos());
SetDlgItemText(IDC_STATIC_C,_T(msg));
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -