📄 comparesortdlg.cpp
字号:
// CompareSortDlg.cpp : implementation file
//
#include "StdAfx.h"
#include "CompareSort.h"
#include "CompareSortDlg.h"
#include "InputDialog.h"
#include<assert.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCompareSortDlg dialog
CCompareSortDlg::CCompareSortDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCompareSortDlg::IDD, pParent)
{
D=NULL;
Qflag=0;
counter=0;
Mflag=0;
Time[0].MTime=0;
Time[0].Num=0;
Time[0].QTime=0;
//{{AFX_DATA_INIT(CCompareSortDlg)
m_MinValue = 5000;
m_MaxValue = 100000;
m_Num = 5000;
m_Sorce = _T("");
m_Result = _T("");
m_AutoRun = 0;
m_CAutoRun=0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CCompareSortDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCompareSortDlg)
DDX_Control(pDX, IDC_SLIDER, m_Slider);
DDX_Text(pDX, IDC_EDIT1, m_MinValue);
DDX_Text(pDX, IDC_EDIT2, m_MaxValue);
DDX_Text(pDX, IDC_EDIT3, m_Num);
DDX_Text(pDX, IDC_EDIT4, m_Sorce);
DDX_Text(pDX, IDC_EDIT5, m_Result);
DDX_Radio(pDX, IDC_Random, m_AutoRun);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCompareSortDlg, CDialog)
//{{AFX_MSG_MAP(CCompareSortDlg)
ON_WM_SYSCOMMAND()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_CLEANRESULT, OnCleanresult)
ON_BN_CLICKED(IDC_CLEANSORCE, OnCleansorce)
ON_BN_CLICKED(IDC_INPUT, OnInput)
ON_BN_CLICKED(IDC_MERGESORT, OnMergesort)
ON_BN_CLICKED(IDC_QUICKSORT, OnQuicksort)
ON_BN_CLICKED(IDC_Random, OnRandom)
ON_BN_CLICKED(IDC_Manual, OnManual)
ON_BN_CLICKED(IDC_SHOWRESULT, OnShowresult)
ON_BN_CLICKED(IDC_SHOWSORCE, OnShowsorce)
ON_WM_HSCROLL()
ON_BN_CLICKED(IDC_AutoRun, OnAutoRun)
ON_BN_CLICKED(IDC_ManualRun, OnManualRun)
ON_BN_CLICKED(IDC_START, OnSTART)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCompareSortDlg message handlers
//********************初始化对话框*****************************
BOOL CCompareSortDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
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);
}
}
// 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
// TODO: Add extra initialization here
//设置各个按钮是否有效
GetDlgItem(IDC_SHOWSORCE)->EnableWindow(FALSE);
GetDlgItem(IDC_SHOWRESULT)->EnableWindow(FALSE);
GetDlgItem(IDC_CLEANSORCE)->EnableWindow(FALSE);
GetDlgItem(IDC_CLEANRESULT)->EnableWindow(FALSE);
GetDlgItem(IDC_QUICKSORT)->EnableWindow(FALSE);
GetDlgItem(IDC_MERGESORT)->EnableWindow(FALSE);
//设置滑尺属性
m_Slider.SetRange(5000,100000); //设置滑尺在单缝轨道上的移动范围
m_Slider.SetPos(5000);
m_Slider.SetTicFreq(5000); //设置单缝轨道的刻度
m_Slider.SetLineSize(5000); //设置按左右箭头或鼠标单击单缝轨道时滑尺的移动量
return TRUE; // return TRUE unless you set the focus to a control
}
void CCompareSortDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CCompareSortDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
//********************响应自动运行键*************************
void CCompareSortDlg::OnAutoRun()
{
// TODO: Add your control notification handler code here
m_CAutoRun=0;
//设置各个按钮的有效性
GetDlgItem(IDC_START)->EnableWindow(TRUE);
GetDlgItem(IDC_SHOWSORCE)->EnableWindow(FALSE);
GetDlgItem(IDC_SHOWRESULT)->EnableWindow(FALSE);
GetDlgItem(IDC_CLEANSORCE)->EnableWindow(FALSE);
GetDlgItem(IDC_CLEANRESULT)->EnableWindow(FALSE);
GetDlgItem(IDC_QUICKSORT)->EnableWindow(FALSE);
GetDlgItem(IDC_MERGESORT)->EnableWindow(FALSE);
GetDlgItem(IDC_INPUT)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER)->EnableWindow(FALSE);
}
//********************响应人工运行键**************************
void CCompareSortDlg::OnManualRun()
{
// TODO: Add your control notification handler code here
m_CAutoRun=1;
//设置各个按钮的有效性
GetDlgItem(IDC_START)->EnableWindow(FALSE);
GetDlgItem(IDC_SHOWSORCE)->EnableWindow(FALSE);
GetDlgItem(IDC_SHOWRESULT)->EnableWindow(FALSE);
GetDlgItem(IDC_CLEANSORCE)->EnableWindow(FALSE);
GetDlgItem(IDC_CLEANRESULT)->EnableWindow(FALSE);
GetDlgItem(IDC_QUICKSORT)->EnableWindow(FALSE);
GetDlgItem(IDC_MERGESORT)->EnableWindow(FALSE);
GetDlgItem(IDC_INPUT)->EnableWindow(TRUE);
GetDlgItem(IDC_SLIDER)->EnableWindow(TRUE);
}
//********************响应开始自动运行程序键*********************
void CCompareSortDlg::OnSTART()
{
// TODO: Add your control notification handler code here
m_Num=5000;
for(int i=1;i<=20;i++)
{
OnInput();
OnQuicksort();
OnMergesort();
m_Num=5000*(i+1);
UpdateData(FALSE);
Sleep(500);
}
GetDlgItem(IDC_START)->EnableWindow(FALSE);
}
//********************响应随机生成键************************
void CCompareSortDlg::OnRandom()
{
// TODO: Add your control notification handler code here
m_AutoRun=0;
m_MinValue=5000;
m_MaxValue=100000;
m_Num=5000;
//设置滑尺属性
m_Slider.SetRange(5000,100000); //设置滑尺在单缝轨道上的移动范围
m_Slider.SetPos(5000);
m_Slider.SetTicFreq(5000); //设置单缝轨道的刻度
m_Slider.SetLineSize(5000); //设置按左右箭头或鼠标单击单缝轨道时滑尺的移动量
m_Result="";
m_Sorce="";
UpdateData(FALSE);
GetDlgItem(IDC_INPUT)->EnableWindow(TRUE);
}
//********************响应手动输入键**************************
void CCompareSortDlg::OnManual()
{
// TODO: Add your control notification handler code here
m_AutoRun=1;
m_MinValue=1;
m_MaxValue=20;
m_Num=1;
//设置滑尺属性
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -