⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 settingdlg.cpp

📁 包含八种排序算法的界面演示多线程程序,以线段形式表示数据大小,排序一清二楚
💻 CPP
字号:
// SettingDlg.cpp : implementation file
//

#include "stdafx.h"
#include "sort.h"
#include "SettingDlg.h"
#include "sortwnd.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSettingDlg dialog


CSettingDlg::CSettingDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSettingDlg::IDD, pParent)
{

	//{{AFX_DATA_INIT(CSettingDlg)
	m_SortType = 0;
	m_BubbleSort = TRUE;
	m_SelectionSort = TRUE;
	m_InsertSort = TRUE;
	m_QuickSort = TRUE;
	m_MergeSort = TRUE;
	m_HeapSort = TRUE;
	m_ShellSort = TRUE;
	m_RadixSort = FALSE;
	m_SleepTime = 1;
	m_FreshTime = 50;
	m_NumData = 600;
	m_DataWidth =250;
	m_Per_SC = 60;
	m_parent=pParent;
	m_HaveSleep = TRUE;
	//}}AFX_DATA_INIT

	Create(CSettingDlg::IDD,pParent);
}


void CSettingDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSettingDlg)
	DDX_Radio(pDX, IDC_RADIO1, m_SortType);
	DDX_Check(pDX, IDC_CHECK1, m_BubbleSort);
	DDX_Check(pDX, IDC_CHECK2, m_SelectionSort);
	DDX_Check(pDX, IDC_CHECK3, m_InsertSort);
	DDX_Check(pDX, IDC_CHECK4, m_QuickSort);
	DDX_Check(pDX, IDC_CHECK5, m_MergeSort);
	DDX_Check(pDX, IDC_CHECK6, m_HeapSort);
	DDX_Check(pDX, IDC_CHECK8, m_ShellSort);
	DDX_Check(pDX, IDC_CHECK7, m_RadixSort);
	DDX_Text(pDX, IDC_EDIT1, m_SleepTime);
	DDV_MinMaxInt(pDX, m_SleepTime, 0, 1000);
	DDX_Text(pDX, IDC_EDIT2, m_FreshTime);
	DDV_MinMaxInt(pDX, m_FreshTime, 1, 3000);
	DDX_Text(pDX, IDC_EDIT3, m_NumData);
	DDV_MinMaxInt(pDX, m_NumData, 1, 500000000);
	DDX_Text(pDX, IDC_EDIT4, m_DataWidth);
	DDV_MinMaxInt(pDX, m_DataWidth, 1, 100000);
	DDX_Text(pDX, IDC_EDIT5, m_Per_SC);
	DDV_MinMaxInt(pDX, m_Per_SC, 0, 100);
	DDX_Check(pDX, IDC_CHECK9, m_HaveSleep);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSettingDlg, CDialog)
	//{{AFX_MSG_MAP(CSettingDlg)
	ON_BN_CLICKED(IDAPPLY, OnApply)
	ON_BN_CLICKED(IDC_CHECK9, OnCheck9)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSettingDlg message handlers

void CSettingDlg::OnOK() 
{
	OnApply();
	CDialog::OnOK();
}

void CSettingDlg::OnCancel() 
{
	// TODO: Add extra cleanup here

	CDialog::OnCancel();
}

void CSettingDlg::OnApply() 
{
	SortWnd * p=(SortWnd*)m_parent;
	// TODO: Add your control notification handler code here
	BOOL b=UpdateData();
	if (b)
	{
		p->DataWidth=m_DataWidth;
		p->Num_Data=m_NumData;
		p->SleepTime=m_SleepTime;
		p->HZ=m_FreshTime;
		p->Per_SC=m_Per_SC;
		if (!p->sort[0]&&m_BubbleSort) {p->sort[0]=new CBubbleSort();p->Num_Sort++;}
		else if (p->sort[0]&&!m_BubbleSort) {p->Num_Sort--;CSort* temp=p->sort[0];p->sort[0]=NULL;delete temp;}
		if (!p->sort[1]&&m_SelectionSort) {p->sort[1]=new CSelectionSort();p->Num_Sort++;}
		else if (p->sort[1]&&!m_SelectionSort) {p->Num_Sort--;CSort* temp=p->sort[1];p->sort[1]=NULL;delete temp;}
		if (!p->sort[2]&&m_InsertSort) {p->sort[2]=new CInsertSort();p->Num_Sort++;}
		else if (p->sort[2]&&!m_InsertSort) {p->Num_Sort--;CSort* temp=p->sort[2];p->sort[2]=NULL;delete temp;}
		if (!p->sort[3]&&m_QuickSort) {p->sort[3]=new CQuickSort();p->Num_Sort++;}
		else if (p->sort[3]&&!m_QuickSort) {p->Num_Sort--;CSort* temp=p->sort[3];p->sort[3]=NULL;delete temp;}
		if (!p->sort[7]&&m_ShellSort) {p->sort[7]=new CShellSort();p->Num_Sort++;}
		else if (p->sort[7]&&!m_ShellSort) {p->Num_Sort--;CSort* temp=p->sort[7];p->sort[7]=NULL;delete temp;}
		if (!p->sort[4]&&m_MergeSort) {p->sort[4]=new CMergeSort();p->Num_Sort++;}
		else if (p->sort[4]&&!m_MergeSort) {p->Num_Sort--;CSort* temp=p->sort[4];p->sort[4]=NULL;delete temp;}
		if (!p->sort[5]&&m_HeapSort) {p->sort[5]=new CHeapSort();p->Num_Sort++;}
		else if (p->sort[5]&&!m_HeapSort) {p->Num_Sort--;CSort* temp=p->sort[5];p->sort[5]=NULL;delete temp;}
//		if (!p->sort[0]&&m_BubbleSort) {p->sort[0]=new CBubbleSort();p->Num_Sort++;}
//		else if (p->sort[0]&&!m_BubbleSort) {p->Num_Sort--;CSort* temp=p->sort[0];p->sort[0]=NULL;delete temp;}
//		if (!p->sort[0]&&m_BubbleSort) {p->sort[0]=new CBubbleSort();p->Num_Sort++;}
//		else if (p->sort[0]&&!m_BubbleSort) {p->Num_Sort--;CSort* temp=p->sort[0];p->sort[0]=NULL;delete temp;}
		p->DeleteThread();
		for (int i=0;i<MAX;i++) 
			if (p->sort[i]) 
			{
				p->sort[i]->EnableSleep(m_HaveSleep);
				p->sort[i]->IsASC=!m_SortType;
			}
		if (m_SortType)
		{
			p->ASCButton->SetWindowText("降序化");
			p->DSCButton->SetWindowText("升序化");
		}
		else
		{
			p->ASCButton->SetWindowText("升序化");
			p->DSCButton->SetWindowText("降序化");
		}
		p->Set();
		p->RandData();
		p->DrawFull();
	}
}

void CSettingDlg::OnCheck9() 
{
	UpdateData();
	this->GetDlgItem(IDC_EDIT1)->EnableWindow(m_HaveSleep);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -