📄 waitprogressdlg.cpp
字号:
// WaitProgressDlg.cpp : implementation file
//
#include "stdafx.h"
#include "WaitProgress.h"
#include "WaitProgressDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWaitProgressDlg dialog
CWaitProgressDlg::CWaitProgressDlg(CWnd* pParent /*=NULL*/)
: CDialog(CWaitProgressDlg::IDD, pParent)
, m_nSpeed(250)
{
//{{AFX_DATA_INIT(CWaitProgressDlg)
// m_nSpeed = 0;
m_nIBPadding = m_ctlBusy.GetInterBlockPadding();
m_nNumBlocks = m_ctlBusy.GetNumSteps();
m_nMode = 0;
m_nBusyType = 0;
m_nBusyFill = 0;
m_nGranularity = m_ctlBusy.GetGranularity();
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CWaitProgressDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWaitProgressDlg)
DDX_Control(pDX, IDC_STATIC_BUSYPROGRESS, m_ctlBusy);
DDX_Control(pDX, IDC_BUTTON_COLBLOCKFACEHI, m_btnColBFaceHi);
DDX_Control(pDX, IDC_BUTTON_COLBLOCKEDGEHI, m_btnColBEdgeHi);
DDX_Control(pDX, IDC_BUTTON_COLBLOCKFACE, m_btnColBFace);
DDX_Control(pDX, IDC_BUTTON_COLBLOCKEDGE, m_btnColBEdge);
DDX_Control(pDX, IDC_BUTTON_COLBKG, m_btnColBkg);
DDX_Text(pDX, IDC_EDIT_SPEED, m_nSpeed);
DDX_Text(pDX, IDC_EDIT_IBPADDING, m_nIBPadding);
DDX_Text(pDX, IDC_EDIT_NUMBLOCKS, m_nNumBlocks);
DDX_Radio(pDX, IDC_RADIO_MODE, m_nMode);
DDX_Radio(pDX, IDC_RADIO_BUSYTYPE_PINGPONG, m_nBusyType);
DDX_Radio(pDX, IDC_RADIO_BUSYFILL_BLOCK, m_nBusyFill);
DDX_Text(pDX, IDC_EDIT_GRANULARITY, m_nGranularity);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWaitProgressDlg, CDialog)
//{{AFX_MSG_MAP(CWaitProgressDlg)
ON_BN_CLICKED(IDC_RADIO_BUSYFILL_BLOCK, OnRadioBusyfill)
ON_BN_CLICKED(IDC_RADIO_BUSYTYPE_PINGPONG, OnRadioBusytype)
ON_EN_CHANGE(IDC_EDIT_SPEED, OnChangeEditSpeed)
ON_EN_CHANGE(IDC_EDIT_IBPADDING, OnChangeEditIbpadding)
ON_EN_CHANGE(IDC_EDIT_NUMBLOCKS, OnChangeEditNumblocks)
ON_EN_CHANGE(IDC_EDIT_GRANULARITY, OnChangeEditGranularity)
ON_BN_CLICKED(IDC_RADIO_MODE, OnRadioMode)
ON_BN_CLICKED(IDC_RADIO2, OnRadioModeProgress)
ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart)
ON_WM_DESTROY()
ON_WM_TIMER()
ON_BN_CLICKED(IDC_RADIO_BUSYTYPE_LTR, OnRadioBusytype)
ON_BN_CLICKED(IDC_RADIO_BUSYFILL_SMOOTH, OnRadioBusyfill)
ON_BN_CLICKED(IDC_RADIO_BUSYTYPE_RTL, OnRadioBusytype)
//}}AFX_MSG_MAP
ON_MESSAGE(CPN_SELENDOK, OnSelEndOK)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWaitProgressDlg message handlers
BOOL CWaitProgressDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
//
// Initilialise the BusyProgressCtrl
m_ctlBusy.SetNumSteps(20);
m_ctlBusy.SetSpeed(m_nSpeed);
m_ctlBusy.SetRange(-100, 100);
// initialise the colour buttons
m_btnColBEdge.SetColour(m_ctlBusy.GetColBlockEdge());
m_btnColBFace.SetColour( m_ctlBusy.GetColBlockFace() );
m_btnColBEdgeHi.SetColour( m_ctlBusy.GetColBlockEdgeHi() );
m_btnColBFaceHi.SetColour( m_ctlBusy.GetColBlockFaceHi() );
m_btnColBkg.SetColour( m_ctlBusy.GetColBkg() );
return TRUE; // return TRUE unless you set the focus to a control
}
void CWaitProgressDlg::OnRadioBusyfill()
{
UpdateData();
switch ( m_nBusyFill )
{
case 0:
m_ctlBusy.SetBusyFill(BPC_BUSYFILL_BLOCK);
break;
case 1:
m_ctlBusy.SetBusyFill(BPC_BUSYFILL_SMOOTH);
break;
}
}
void CWaitProgressDlg::OnRadioBusytype()
{
UpdateData();
switch ( m_nBusyType )
{
case 0:
m_ctlBusy.SetBusyType(BPC_BUSY_PINGPONG);
break;
case 1:
m_ctlBusy.SetBusyType(BPC_BUSY_LTR);
break;
case 2:
m_ctlBusy.SetBusyType(BPC_BUSY_RTL);
break;
}
}
void CWaitProgressDlg::OnChangeEditSpeed()
{
UpdateData();
if ( m_ctlBusy.GetMode() == BPC_MODE_PROGRESS )
{
KillTimer(1);
SetTimer(1, m_nSpeed, NULL);
}
m_ctlBusy.SetSpeed(m_nSpeed);
}
void CWaitProgressDlg::OnChangeEditIbpadding()
{
UpdateData();
m_ctlBusy.SetInterBlockPadding(m_nIBPadding);
m_ctlBusy.Invalidate();
}
void CWaitProgressDlg::OnChangeEditNumblocks()
{
UpdateData();
m_ctlBusy.Reset();
m_ctlBusy.SetNumSteps(m_nNumBlocks);
m_ctlBusy.Invalidate();
}
void CWaitProgressDlg::OnChangeEditGranularity()
{
UpdateData();
m_ctlBusy.SetGranularity(m_nGranularity);
}
void CWaitProgressDlg::OnRadioMode()
{
UpdateData();
KillTimer(1);
m_ctlBusy.SetMode(BPC_MODE_BUSY);
m_ctlBusy.Reset();
GetDlgItem(IDC_RADIO_BUSYTYPE_PINGPONG)->EnableWindow(TRUE);
GetDlgItem(IDC_RADIO_BUSYTYPE_LTR)->EnableWindow(TRUE);
GetDlgItem(IDC_RADIO_BUSYTYPE_RTL)->EnableWindow(TRUE);
GetDlgItem(IDC_RADIO_BUSYFILL_BLOCK)->EnableWindow(TRUE);
GetDlgItem(IDC_RADIO_BUSYFILL_SMOOTH)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_GRANULARITY)->EnableWindow(TRUE);
}
void CWaitProgressDlg::OnRadioModeProgress()
{
if ( m_ctlBusy.IsRunning() )
OnButtonStart();
UpdateData();
m_ctlBusy.SetMode(BPC_MODE_PROGRESS);
m_ctlBusy.Reset();
GetDlgItem(IDC_RADIO_BUSYTYPE_PINGPONG)->EnableWindow(FALSE);
GetDlgItem(IDC_RADIO_BUSYTYPE_LTR)->EnableWindow(FALSE);
GetDlgItem(IDC_RADIO_BUSYTYPE_RTL)->EnableWindow(FALSE);
GetDlgItem(IDC_RADIO_BUSYFILL_BLOCK)->EnableWindow(FALSE);
GetDlgItem(IDC_RADIO_BUSYFILL_SMOOTH)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_GRANULARITY)->EnableWindow(FALSE);
}
void CWaitProgressDlg::OnButtonStart()
{
if ( m_ctlBusy.GetMode() & BPC_MODE_BUSY )
{
if ( !m_ctlBusy.IsRunning() )
{
if ( m_ctlBusy.GetMode() & BPC_MODE_BUSY)
m_ctlBusy.Start();
GetDlgItem(IDC_BUTTON_START)->SetWindowText(_T("Stop"));
}
else
{
m_ctlBusy.End();
GetDlgItem(IDC_BUTTON_START)->SetWindowText(_T("Start"));
}
}
else if ( m_ctlBusy.GetMode() & BPC_MODE_PROGRESS )
{
CString strText;
GetDlgItem(IDC_BUTTON_START)->GetWindowText(strText);
if ( !strText.CompareNoCase( _T("Start") ) )
{
m_ctlBusy.Reset();
SetTimer(1, m_nSpeed, NULL);
GetDlgItem(IDC_BUTTON_START)->SetWindowText(_T("Stop"));
}
else
{
KillTimer(1);
GetDlgItem(IDC_BUTTON_START)->SetWindowText(_T("Start"));
}
}
}
void CWaitProgressDlg::OnDestroy()
{
m_ctlBusy.End();
CDialog::OnDestroy();
}
void CWaitProgressDlg::OnTimer(UINT nIDEvent)
{
int nLower, nUpper;
int nCurPos = m_ctlBusy.GetCurPos();
m_ctlBusy.GetRange(nLower, nUpper);
if ( nCurPos >= nUpper-nLower)
m_ctlBusy.SetCurPos(0);
else
m_ctlBusy.StepIt();
CDialog::OnTimer(nIDEvent);
}
LONG CWaitProgressDlg::OnSelEndOK(UINT lParam, LONG wParam)
{
switch(wParam)
{
case IDC_BUTTON_COLBKG:
m_ctlBusy.SetColBkg(m_btnColBkg.GetColour());
break;
case IDC_BUTTON_COLBLOCKFACE:
m_ctlBusy.SetColBlockFace(m_btnColBFace.GetColour());
break;
case IDC_BUTTON_COLBLOCKEDGE:
m_ctlBusy.SetColBlockEdge(m_btnColBEdge.GetColour());
break;
case IDC_BUTTON_COLBLOCKFACEHI:
m_ctlBusy.SetColBlockFaceHi(m_btnColBFaceHi.GetColour());
break;
case IDC_BUTTON_COLBLOCKEDGEHI:
m_ctlBusy.SetColBlockEdgeHi(m_btnColBEdgeHi.GetColour());
break;
}
m_ctlBusy.Invalidate();
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -