📄 testalldlg.cpp
字号:
// TestAllDlg.cpp : implementation file
//
#include "stdafx.h"
#include "NonLimitCalculator.h"
#include "TestAllDlg.h"
#include "SetLoopDlg.h"
#include "MyUsefulFunction.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTestAllDlg dialog
CTestAllDlg::CTestAllDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestAllDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTestAllDlg)
m_bCheckCom = FALSE;
//}}AFX_DATA_INIT
}
/////////////////////////////////////////////////////////////////////////////
void CTestAllDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestAllDlg)
DDX_Control(pDX, IDC_PROGRESS1, m_cProgress);
DDX_Control(pDX, IDC_TAB1, m_Tab);
DDX_Check(pDX, IDC_CHECK1, m_bCheckCom);
//}}AFX_DATA_MAP
}
/////////////////////////////////////////////////////////////////////////////
// CTestAllDlg message handlers
BOOL CTestAllDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
TCITEM tci;
tci.mask = TCIF_TEXT;
tci.pszText = "Test + - *";
m_Tab.InsertItem (0, &tci);
tci.pszText = "Test \\";
m_Tab.InsertItem (1, &tci);
m_cProgress.SetStep(1);
m_pThread = NULL;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/////////////////////////////////////////////////////////////////////////////
void CTestAllDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
switch(m_Tab.GetCurSel())
{
case 0:
m_DlgOther.ShowWindow (SW_SHOW);
break;
case 1:
m_DlgDiv.ShowWindow (SW_SHOW);
break;
}
*pResult = 0;
}
/////////////////////////////////////////////////////////////////////////////
void CTestAllDlg::OnSelchangingTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
switch(m_Tab.GetCurSel())
{
case 0:
m_DlgOther.ShowWindow (SW_HIDE);
m_DlgOther.m_csEdit1 = _T("");
m_DlgOther.m_csEdit2 = _T("");
m_DlgOther.m_csComResult = _T("");
m_DlgOther.m_csMyResult = _T("");
break;
case 1:
m_DlgDiv.ShowWindow (SW_HIDE);
m_DlgDiv.m_csEdit1 = _T("");
m_DlgDiv.m_csEdit2 = _T("");
m_DlgDiv.m_csComQuo = _T("");
m_DlgDiv.m_csComMod = _T("");
m_DlgDiv.m_csMyQuo = _T("");
m_DlgDiv.m_csMyMod = _T("");
break;
}
*pResult = 0;
}
/////////////////////////////////////////////////////////////////////////////
void CTestAllDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
if (bShow)
{
m_DlgDiv.Create(IDD_DIALOG_TESTDIV, m_Tab.GetActiveWindow());
m_DlgDiv.ShowWindow(SW_HIDE);
m_DlgOther.Create(IDD_DIALOG_TESTOTHER, m_Tab.GetActiveWindow());
m_DlgOther.ShowWindow(SW_SHOW);
}
}
/////////////////////////////////////////////////////////////////////////////
void CTestAllDlg::OnButtonTest()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
switch(m_Tab.GetCurSel())
{
case 0:
m_DlgOther.TestCalc(m_bCheckCom);
break;
case 1:
m_DlgDiv.TestCalc(m_bCheckCom);
break;
}
}
/////////////////////////////////////////////////////////////////////////////
void CTestAllDlg::OnButtonRandomtest()
{
// TODO: Add your control notification handler code here
if (m_pThread)
{
DWORD dw;
GetExitCodeThread(m_pThread->m_hThread, &dw);
if (dw == STILL_ACTIVE)
{
SetEvent(m_hEvent);
m_pThread = NULL;
SetReadOnly(FALSE);
return;
}
else
{
m_pThread = NULL;
}
}
if (!m_pThread)
{
m_hEvent = CreateEvent(NULL, FALSE, FALSE, "ShouldStop");
Randomize();
m_cProgress.SetPos(0);
UpdateData(TRUE);
m_DlgDiv.UpdateData(TRUE);
m_DlgOther.UpdateData(TRUE);
CSetLoopDlg dlg;
switch(m_Tab.GetCurSel())
{
case 0:
dlg.m_nType = m_DlgOther.m_nRadio;
break;
case 1:
dlg.m_nType = 3;
}
if (dlg.DoModal() != IDOK)
return;
m_rtp.nLoop = dlg.m_nLoop;
m_rtp.iLength1 = dlg.m_iLength1;
m_rtp.iLength2 = dlg.m_iLength2;
m_cProgress.SetRange(0, dlg.m_nLoop);
m_rtp.hWndTop = GetSafeHwnd();
SetReadOnly(TRUE);
switch(m_Tab.GetCurSel())
{
case 0:
m_rtp.nType = 0;
m_rtp.hWndChild = m_DlgOther.GetSafeHwnd();
m_DlgOther.SetReadOnly(TRUE);
m_pThread = AfxBeginThread(::RandomTestThread, (LPVOID) &m_rtp, THREAD_PRIORITY_NORMAL);
ASSERT(m_pThread);
break;
case 1:
m_rtp.nType = 1;
m_rtp.hWndChild = m_DlgDiv.GetSafeHwnd();
m_DlgDiv.SetReadOnly(TRUE);
m_pThread = AfxBeginThread(::RandomTestThread, (LPVOID) &m_rtp, THREAD_PRIORITY_NORMAL);
ASSERT(m_pThread);
break;
}
}
}
/////////////////////////////////////////////////////////////////////////////
LRESULT CTestAllDlg::OnAddProgress(WPARAM wParam, LPARAM lParam)
{
m_cProgress.StepIt();
m_cProgress.UpdateData(FALSE);
return 0;
}
/////////////////////////////////////////////////////////////////////////////
void CTestAllDlg::SetReadOnly(BOOL bIsReadOnly)
{
CWnd * pWnd;
pWnd = GetDlgItem(IDOK);
pWnd -> EnableWindow(!bIsReadOnly);
pWnd = GetDlgItem(IDCANCEL);
pWnd -> EnableWindow(!bIsReadOnly);
pWnd = GetDlgItem(IDC_BUTTON_TEST);
pWnd -> EnableWindow(!bIsReadOnly);
pWnd = GetDlgItem(IDC_CHECK1);
pWnd -> EnableWindow(!bIsReadOnly);
m_Tab.EnableWindow(!bIsReadOnly);
if (bIsReadOnly)
SetDlgItemText(IDC_BUTTON_RANDOMTEST, "Stop Test");
else
SetDlgItemText(IDC_BUTTON_RANDOMTEST, "Random Test");
}
////////////////////////////////////////////////////////////////////////
LRESULT CTestAllDlg::OnResetReadOnlyFlag(WPARAM wParam, LPARAM lParam)
{
SetReadOnly(FALSE);
return 1;
}
/////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CTestAllDlg, CDialog)
//{{AFX_MSG_MAP(CTestAllDlg)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)
ON_NOTIFY(TCN_SELCHANGING, IDC_TAB1, OnSelchangingTab1)
ON_WM_SHOWWINDOW()
ON_BN_CLICKED(IDC_BUTTON_TEST, OnButtonTest)
ON_BN_CLICKED(IDC_BUTTON_RANDOMTEST, OnButtonRandomtest)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_ADDPROGRESS, OnAddProgress)
ON_MESSAGE(WM_RESETREADONLYFLAG, OnResetReadOnlyFlag)
END_MESSAGE_MAP()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -