📄 attemperdlg.cpp
字号:
// attemperDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "attemper.h"
#include "attemperDlg.h"
#include "helper.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//CAboutDlg 对话框
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnHelp();
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
ON_COMMAND(ID_HELP, &CAboutDlg::OnHelp)
END_MESSAGE_MAP()
// CattemperDlg 对话框
CattemperDlg::CattemperDlg(CWnd* pParent /*=NULL*/)
: CDialog(CattemperDlg::IDD, pParent)
, mathodchose(false)
, mathodmodul(false)
, i(0)
, running(false)
, pov(0)
, scanoder(0)
, m(0)
, finished(0)
, ssure(false)
, modul(false)
, mm(0)
, tt(0)
, m_sEdit(_T(""))
, rollpos(0)
, v_sEdit(_T(""))
, pup(_T(""))
, temp_Edit(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CattemperDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_RESULT, m_Edit);
DDX_Control(pDX, IDC_ORDER, v_Edit);
DDX_Text(pDX, IDC_RESULT, m_sEdit);
DDX_Text(pDX, IDC_ORDER, v_sEdit);
}
BEGIN_MESSAGE_MAP(CattemperDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_auto, &CattemperDlg::OnBnClickedauto)
//ON_EN_CHANGE(IDC_RESULT, &CattemperDlg::OnEnChangeResult)
ON_EN_CHANGE(IDC_manageadd, &CattemperDlg::OnEnChangemanageadd)
ON_BN_CLICKED(IDC_RANDOM, &CattemperDlg::OnBnClickedRandom)
ON_BN_CLICKED(IDC_manage, &CattemperDlg::OnBnClickedmanage)
ON_BN_CLICKED(IDC_unauto, &CattemperDlg::OnBnClickedunauto)
ON_BN_CLICKED(IDC_manage_ok, &CattemperDlg::OnBnClickedmanageok)
ON_EN_CHANGE(IDC_wmanageadd, &CattemperDlg::OnEnChangewmanageadd)
ON_BN_CLICKED(IDOK, &CattemperDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_RUN, &CattemperDlg::OnBnClickedRun)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_step, &CattemperDlg::OnBnClickedstep)
ON_BN_CLICKED(IDC_fstb, &CattemperDlg::OnBnClickedfstb)
ON_BN_CLICKED(IDC_fbts, &CattemperDlg::OnBnClickedfbts)
ON_EN_CHANGE(IDC_postion, &CattemperDlg::OnEnChangepostion)
ON_BN_CLICKED(IDC_PAUSE, &CattemperDlg::OnBnClickedPause)
//ON_EN_CHANGE(IDC_SCANNING, &CattemperDlg::OnEnChangeScanning)
ON_BN_CLICKED(IDC_sure, &CattemperDlg::OnBnClickedsure)
ON_BN_CLICKED(IDC_RANDOM_OK, &CattemperDlg::OnBnClickedRandomOk)
ON_BN_CLICKED(IDC_RESET, &CattemperDlg::OnBnClickedReset)
ON_WM_HSCROLL()
ON_COMMAND(ID_APP_ABOUT, &CattemperDlg::OnAppAbout)
ON_EN_CHANGE(IDC_EDIT2, &CattemperDlg::OnEnChangeEdit2)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER, &CattemperDlg::OnNMCustomdrawSlider)
ON_EN_CHANGE(IDC_TIMEPOS, &CattemperDlg::OnEnChangeTimepos)
ON_COMMAND(ID_HELP, &CattemperDlg::OnHelp)
END_MESSAGE_MAP()
// CattemperDlg 消息处理程序
BOOL CattemperDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
/*CButton *but((CButton*)GetDlgItem(IDC_manageadd));
but->EnableWindow(false);*/
/*CFrameWnd *pFrmWnd = GetTopLevelFrame();
CMenu *pMenu = pFrmWnd->GetMenu();
CMenu *pSubMenu1 = pMenu->GetSubMenu(0);
pSubMenu1-> EnableMenuItem( IDC_RUN, MF_DISABLED );*/
CButton *but1((CButton*)GetDlgItem(IDC_wmanageadd));
but1->EnableWindow(false);
SetDlgItemInt(IDC_manageadd,1);
CButton *but2((CButton*)GetDlgItem(IDC_manage_ok));
but2->EnableWindow(false);
CheckRadioButton(IDC_fstb, IDC_fbts, IDC_fstb);
CheckRadioButton(IDC_auto, IDC_unauto, IDC_auto);
CheckRadioButton(IDC_RANDOM, IDC_manage, IDC_manage);
CButton *but7((CButton*)GetDlgItem(IDC_RUN));
but7->EnableWindow(false);
CButton *but3((CButton*)GetDlgItem(IDC_step));
but3->EnableWindow(false);
CButton *pau((CButton*)GetDlgItem(IDC_PAUSE));
pau->EnableWindow(false);
CButton *edi((CButton*)GetDlgItem(IDC_RANDOM));
edi->EnableWindow(false);
CButton *edi1((CButton*)GetDlgItem(IDC_manage));
edi1->EnableWindow(false);
CButton *ed((CButton*)GetDlgItem(IDC_RANDOM_OK));
ed->EnableWindow(false);
//CButton *med1((CButton*)GetDlgItem(IDC_SCANNING));
//med1->EnableWindow(false);
//CButton *med2((CButton*)GetDlgItem(IDC_FINISHED));
//med2->EnableWindow(false);
//CButton *med3((CButton*)GetDlgItem(IDC_TOTAL));
//med3->EnableWindow(false);
mathodchose=false;
mathodmodul=true;
ssure=false;
running=false;
scanoder=true;
SetDlgItemInt(IDC_postion,0);
SetDlgItemInt(IDC_NUM_TOTAL,6);
SetDlgItemInt(IDC_NUM_NEED,5);
need=5;
max=6;
i=0; finished=0;
//滑块添加
pSlider = (CSliderCtrl *)GetDlgItem(IDC_SLIDER);
pSlider->SetRange(1, 1000);
pSlider->SetPos(1000);
SetDlgItemInt(IDC_TIMEPOS, 1000);
//m_Edit.EnableWindow(0);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CattemperDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CattemperDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
} //Invalidate();
// paint code
CString pop;
CDC *pDC = this->GetDC();
pDC->FillSolidRect(&CRect(505, 62, 510, 449), RGB(255, 0, 0));
for(tt=0;tt<finished;tt++)
{
pop.Format(L"%-4d",pp[tt]);
pDC->FillSolidRect(&CRect(505, 62+int(pp[tt]*(385.0/max)), 510, 65+int(pp[tt]*(385.0/max))), RGB(0, 255, 0));
}
pDC->SetBkColor(RGB(236, 233, 216));
pDC->TextOutW(475, 58+int(pp[finished-1]*(385.0/max)), pop);
pDC->FillSolidRect(&CRect(511, 62+int(pp[finished-1]*(385.0/max)), 525, 65+int(pp[finished-1]*(385.0/max))), RGB(0, 0, 255));
v_Edit.LineScroll(v_Edit.GetLineCount(), 0);
//m_Edit.LineScroll(m_Edit.GetLineCount(), 0);
}
//当用户拖动最小化窗口时系统调用此函数取得光标显示。
//
HCURSOR CattemperDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CattemperDlg::OnBnClickedauto()
{
// TODO: 在此添加控件通知处理程序代码
mathodmodul=true;
CButton *but3((CButton*)GetDlgItem(IDC_step));
but3->EnableWindow(false);
}
void CattemperDlg::OnEnChangemanageadd()
{
// TODO: 如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void CattemperDlg::OnBnClickedRandom()
{
// TODO: 在此添加控件通知处理程序代码
mathodchose=true;
i=need;
CButton *but1((CButton*)GetDlgItem(IDC_wmanageadd));
but1->EnableWindow(false);
CButton *but2((CButton*)GetDlgItem(IDC_manage_ok));
but2->EnableWindow(false);
CButton *but7((CButton*)GetDlgItem(IDC_RUN));
but7->EnableWindow(true);
SetDlgItemInt(IDC_manageadd,i+1);
CButton *edi((CButton*)GetDlgItem(IDC_RANDOM));
edi->EnableWindow(false);
CButton *edi1((CButton*)GetDlgItem(IDC_manage));
edi1->EnableWindow(false);
srand(unsigned int(time(NULL)));
for(m=0;m<need;m++)
{
arra[m].num=rand()%(max+1);
arra[m].sign=false;
number.Format(L"%3d:%3d",m+1,arra[m].num);
// v_Edit.ReplaceSel(number+L"\r\n"); //自动换行
temp_Edit += number + L"\r\n";
}
v_sEdit =temp_Edit;
UpdateData(false);
v_Edit.LineScroll(v_Edit.GetLineCount(), 0);
}
void CattemperDlg::OnBnClickedmanage()
{
// TODO: 在此添加控件通知处理程序代码
mathodchose=false;
i=0;
CButton *but1((CButton*)GetDlgItem(IDC_wmanageadd));
but1->EnableWindow(true);
CButton *but2((CButton*)GetDlgItem(IDC_manage_ok));
but2->EnableWindow(true);
CButton *but7((CButton*)GetDlgItem(IDC_RUN));
but7->EnableWindow(false);
}
void CattemperDlg::OnBnClickedunauto()
{
// TODO: 在此添加控件通知处理程序代码
mathodmodul=false;
}
void CattemperDlg::OnBnClickedmanageok()
{
// TODO: 在此添加控件通知处理程序代码
//if(i+1==need)
//{
// arra[i].num= GetDlgItemInt(IDC_wmanageadd);
// SetDlgItemTextW(IDC_wmanageadd,L"");
// CButton *but1((CButton*)GetDlgItem(IDC_wmanageadd));
// but1->EnableWindow(false);
// CButton *but2((CButton*)GetDlgItem(IDC_manage_ok));
// but2->EnableWindow(false);
// if(arra[i].num>max||arra[i].num<0)
// {
// MessageBox(L"输入错误!重新输入");
// }
// else
// {
//
// arra[i].sign=false;
// number.Format(L"%3d:%3d",i+1,arra[i].num);
// v_Edit.ReplaceSel(number+L"\r\n"); //自动换行
// i++;
// SetDlgItemInt(IDC_manageadd,i+1);
// /* if(running==true)
// {
// SetDlgItemInt(IDC_TOTAL,i);
// }
// else
// {
// CButton *but7((CButton*)GetDlgItem(IDC_RUN));
// but7->EnableWindow(true);*/
// }
//
//
// }
//
//}
//else{
arra[i].num= GetDlgItemInt(IDC_wmanageadd);
if(arra[i].num>max||arra[i].num<0)
{
MessageBox(L"输入错误!重新输入");
}
else
{
arra[i].sign=false;
i++;
number.Format(L"%3d:%3d",i,arra[i-1].num);
//v_Edit.ReplaceSel(number+L"\r\n"); //自动换行
v_sEdit += number + L"\r\n";
UpdateData(false);
v_Edit.LineScroll(v_Edit.GetLineCount(), 0);
m_Edit.LineScroll(m_Edit.GetLineCount(), 0);
SetDlgItemInt(IDC_manageadd,i+1);
if(running==true)
{
SetDlgItemInt(IDC_TOTAL,i);
}
if(i>finished&&running==true&&mathodmodul==true)
{
CButton *pau((CButton*)GetDlgItem(IDC_PAUSE));
pau->EnableWindow(true);
if(modul==true)
{
rollpos=GetDlgItemInt(IDC_TIMEPOS);
SetTimer(1, (UINT)(rollpos) , NULL);
}else{
CButton *but3((CButton*)GetDlgItem(IDC_step));
but3->EnableWindow(true);
}
}else if(i>finished&&running==true&&mathodmodul==false)
{
CButton *but3((CButton*)GetDlgItem(IDC_step));
but3->EnableWindow(true);
}
if(i==need)
{
SetDlgItemTextW(IDC_wmanageadd,L"");
CButton *but1((CButton*)GetDlgItem(IDC_wmanageadd));
but1->EnableWindow(false);
CButton *but2((CButton*)GetDlgItem(IDC_manage_ok));
but2->EnableWindow(false);
CButton *but7((CButton*)GetDlgItem(IDC_RUN));
but7->EnableWindow(true);
CButton *edi((CButton*)GetDlgItem(IDC_RANDOM));
edi->EnableWindow(false);
CButton *edi1((CButton*)GetDlgItem(IDC_manage));
edi1->EnableWindow(false);
}
}
}
void CattemperDlg::OnEnChangewmanageadd()
{
// TODO: 如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -