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

📄 topbuttondlg.cpp

📁 师兄做的算法可视化演示程序
💻 CPP
字号:
// TopButtonDlg.cpp : implementation file
//

#include "stdafx.h"
#include "AlgorithmicDesign.h"
#include "TopButtonDlg.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "PackGreedyDataSetDlg.h"
#include "PackGreedyHelpDlg.h"
#include "InputGraphPrimDlg.h"
#include "MainTreeGreadyHelpDlg.h"
#include "PackDynamicDlg.h"
/////////////////////////////////////////////////////////////////////////////
// CTopButtonDlg dialog


CTopButtonDlg::CTopButtonDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTopButtonDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTopButtonDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CTopButtonDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTopButtonDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTopButtonDlg, CDialog)
	//{{AFX_MSG_MAP(CTopButtonDlg)
	ON_BN_CLICKED(ID_DATA, OnData)
	ON_BN_CLICKED(ID_EXECUTE, OnExecute)
	ON_BN_CLICKED(ID_STOP, OnStop)
	ON_BN_CLICKED(ID_PAUSE, OnPause)
	ON_BN_CLICKED(ID_ODD, OnOdd)
	ON_BN_CLICKED(ID_INTRODUCE, OnIntroduce)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTopButtonDlg message handlers

BOOL CTopButtonDlg::Create( CWnd* pParentWnd ) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::Create(IDD, pParentWnd);
}

void CTopButtonDlg::OnOK()  //退出
{
	// TODO: Add extra validation here
    CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
    pMainFrame->ShowPackGreedyFrame(FALSE,-1);
	
//	CDialog::OnOK();
}

void CTopButtonDlg::OnData()  //设置数据
{
	// TODO: Add your control notification handler code here
	CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
	DWORD RoomData=pMainFrame->m_selectnumber;
	switch (RoomData)
	{
	 case 0:
	 {
      CPackGreedyDataSetDlg m_PackGreedyDataSetDlg;
      int nResponse=m_PackGreedyDataSetDlg.DoModal();
	  if (nResponse == IDOK)
	  {
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
			CWnd* pWnd;
			pWnd = GetDlgItem(ID_EXECUTE);
	        pWnd->EnableWindow(TRUE);
	        pWnd = GetDlgItem(ID_ODD);
	        pWnd->EnableWindow(TRUE);
		    pWnd = GetDlgItem(ID_DATA);
	        pWnd->EnableWindow(FALSE);
			flag=0;

	  }
	  else if (nResponse == IDCANCEL)
	  {
	  }
	  break;
	 }
	case 1:
	{
	   CInputGraphPrimDlg m_InputGraphPrimDlg;
	   int nResponse=m_InputGraphPrimDlg.DoModal();
	   if (nResponse == IDOK)
	   {
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
			CWnd* pWnd;
			pWnd = GetDlgItem(ID_EXECUTE);
	        pWnd->EnableWindow(TRUE);
	        pWnd = GetDlgItem(ID_ODD);
	        pWnd->EnableWindow(TRUE);
		    pWnd = GetDlgItem(ID_DATA);
	        pWnd->EnableWindow(FALSE);
			flag=0;

	  }
	  else if (nResponse == IDCANCEL)
	  {
	  }
	  break;
	}
	 case 2:
	 {
      CPackGreedyDataSetDlg m_PackGreedyDataSetDlg;
      int nResponse=m_PackGreedyDataSetDlg.DoModal();
	  if (nResponse == IDOK)
	  {
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
			CWnd* pWnd;
			pWnd = GetDlgItem(ID_EXECUTE);
	        pWnd->EnableWindow(TRUE);
	        pWnd = GetDlgItem(ID_ODD);
	        pWnd->EnableWindow(TRUE);
		    pWnd = GetDlgItem(ID_DATA);
	        pWnd->EnableWindow(FALSE);
			flag=0;

	  }
	  else if (nResponse == IDCANCEL)
	  {
	  }
	  break;
	 }
	 case 4:
	 {
      CPackGreedyDataSetDlg m_PackGreedyDataSetDlg;
      int nResponse=m_PackGreedyDataSetDlg.DoModal();
	  if (nResponse == IDOK)
	  {
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
			CWnd* pWnd;
			pWnd = GetDlgItem(ID_EXECUTE);
	        pWnd->EnableWindow(TRUE);
	        pWnd = GetDlgItem(ID_ODD);
	        pWnd->EnableWindow(TRUE);
		    pWnd = GetDlgItem(ID_DATA);
	        pWnd->EnableWindow(FALSE);
			flag=0;

	  }
	  else if (nResponse == IDCANCEL)
	  {
	  }
	  break;
	 }
	 default:
		 break;
	}
}

void CTopButtonDlg::OnExecute() //执行
{
	// TODO: Add your control notification handler code here
	CWnd* pWnd;
	pWnd = GetDlgItem(ID_EXECUTE);
    pWnd->EnableWindow(FALSE);
	pWnd = GetDlgItem(ID_ODD);
	pWnd->EnableWindow(FALSE);
    pWnd = GetDlgItem(ID_STOP);
	pWnd->EnableWindow(TRUE);
	pWnd = GetDlgItem(ID_PAUSE);
	pWnd->EnableWindow(TRUE);
    CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
	//pMainFrame->pPackgreedyFrame->p_DemolistView->OnExecute();
	DWORD RoomData=pMainFrame->m_selectnumber;
	switch (RoomData)
	{
	case 0:
		{
			pMainFrame->pPackgreedyFrame->p_AlgorithmiclistView->OnExecute();
	        break;
		}
	case 1:
		{
			if(flag==0)
			{
				pMainFrame->pMintreegreedyFrame->p_AlgorithmiclistView->OnExecute();
				flag=1;
			}
			else
               pMainFrame->pMintreegreedyFrame->p_AlgorithmiclistView->OnContinue();
			break;
		}
	case 4:
		{
			pMainFrame->pPackDynamicFrame->p_AlgorithmiclistView->OnExecute();
	        break;
		}
	default:
		break;
	}

}

BOOL CTopButtonDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	
	m_DataButton.SubclassDlgItem (ID_DATA, this);
	m_DataButton.SetIcon (IDI_DATA);
	m_DataButton.SetActiveBgColor( RGB(198, 211, 238));
	m_IntroduceButton.SubclassDlgItem (ID_INTRODUCE, this);
	m_IntroduceButton.SetIcon (IDI_INTRODUCE);
	m_IntroduceButton.SetActiveBgColor( RGB(198, 211, 238));
	m_PauseButton.SubclassDlgItem (ID_PAUSE, this);
	m_PauseButton.SetIcon (IDI_PAUSE);
	m_PauseButton.SetActiveBgColor( RGB(198, 211, 238));
	m_ExecuteButton.SubclassDlgItem (ID_EXECUTE, this);
	m_ExecuteButton.SetIcon (IDI_EXECUTE);
	m_ExecuteButton.SetActiveBgColor( RGB(198, 211, 238));
	m_OddButton.SubclassDlgItem (ID_ODD, this);
	m_OddButton.SetIcon (IDI_ODD);
	m_OddButton.SetActiveBgColor( RGB(198, 211, 238));	
	m_OutButton.SubclassDlgItem (IDOK, this);
	m_OutButton.SetIcon (IDI_OK);
	m_OutButton.SetActiveBgColor( RGB(198, 211, 238));	
	m_StopButton.SubclassDlgItem (ID_STOP, this);
	m_StopButton.SetIcon (IDI_STOP);
	m_StopButton.SetActiveBgColor( RGB(198, 211, 238));	

	CWnd* pWnd;
	pWnd = GetDlgItem(ID_PAUSE);
	pWnd->EnableWindow(FALSE);
	pWnd = GetDlgItem(ID_EXECUTE);
	pWnd->EnableWindow(FALSE);
	pWnd = GetDlgItem(ID_ODD);
	pWnd->EnableWindow(FALSE);
	pWnd = GetDlgItem(ID_STOP);
	pWnd->EnableWindow(FALSE);	
	flag=0;

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CTopButtonDlg::OnStop() 
{
	// TODO: Add your control notification handler code here

	CWnd* pWnd;
	pWnd = GetDlgItem(ID_PAUSE);
	pWnd->EnableWindow(FALSE);
	pWnd = GetDlgItem(ID_EXECUTE);
	pWnd->EnableWindow(FALSE);
	pWnd = GetDlgItem(ID_ODD);
	pWnd->EnableWindow(FALSE);
	pWnd = GetDlgItem(ID_STOP);
	pWnd->EnableWindow(FALSE);
	pWnd = GetDlgItem(ID_DATA);
	pWnd->EnableWindow(TRUE);
	CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
	DWORD RoomData=pMainFrame->m_selectnumber;
	switch (RoomData)
	{
	case 0:
		{
			pMainFrame->pPackgreedyFrame->p_AlgorithmiclistView->OnStop();
			break;
		}
	case 1:
		{
			pMainFrame->pMintreegreedyFrame->p_AlgorithmiclistView->OnStop();
			break;
		}
	case 4:
		{
			pMainFrame->pPackDynamicFrame->p_AlgorithmiclistView->OnStop();
			break;
		}
	default:
		break;
	}
}

void CTopButtonDlg::OnPause() 
{
	// TODO: Add your control notification handler code here
	CWnd* pWnd;
	pWnd = GetDlgItem(ID_PAUSE);
	pWnd->EnableWindow(FALSE);
	pWnd = GetDlgItem(ID_EXECUTE);
	pWnd->EnableWindow(TRUE);
	pWnd = GetDlgItem(ID_ODD);
	pWnd->EnableWindow(TRUE);
	pWnd = GetDlgItem(ID_STOP);
	pWnd->EnableWindow(TRUE);
	pWnd = GetDlgItem(ID_DATA);
	pWnd->EnableWindow(FALSE);
	CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
	DWORD RoomData=pMainFrame->m_selectnumber;
	switch (RoomData)
	{
	case 0:
		{
			pMainFrame->pPackgreedyFrame->p_AlgorithmiclistView->OnStop();
			break;
		}
	case 1:
		{
			pMainFrame->pMintreegreedyFrame->p_AlgorithmiclistView->OnStop();
			break;
		}
	case 4:
		{
			pMainFrame->pPackDynamicFrame->p_AlgorithmiclistView->OnStop();
			break;
		}
	default:
		break;
	}
	
}

void CTopButtonDlg::OnOdd() 
{
	// TODO: Add your control notification handler code here
	CWnd* pWnd;
	pWnd = GetDlgItem(ID_EXECUTE);
    pWnd->EnableWindow(TRUE);
	pWnd = GetDlgItem(ID_ODD);
	pWnd->EnableWindow(TRUE);
    pWnd = GetDlgItem(ID_STOP);
	pWnd->EnableWindow(TRUE);
	pWnd = GetDlgItem(ID_PAUSE);
	pWnd->EnableWindow(TRUE);
    CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
	DWORD RoomData=pMainFrame->m_selectnumber;
	switch (RoomData)
	{
	case 0:
		{
			pMainFrame->pPackgreedyFrame->p_AlgorithmiclistView->SetOdd();
			break;
		}
	case 1:
		{
			pMainFrame->pMintreegreedyFrame->p_AlgorithmiclistView->OnOdd();
			break;
		}
	case 4:
		{
			pMainFrame->pPackDynamicFrame->p_AlgorithmiclistView->SetOdd();	
			break;
		}
	default:
		break;
	}
}

void CTopButtonDlg::OnIntroduce() 
{
	// TODO: Add your control notification handler code here
    CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
	DWORD RoomData=pMainFrame->m_selectnumber;
	switch (RoomData)
	{
	case 0:
		{
			CPackGreedyHelpDlg  m_dlg;
	        m_dlg.DoModal();
			break;
		}
	case 1:
		{
			CMainTreeGreadyHelpDlg m_dlg;
	        m_dlg.DoModal();
			break;
		}
	case 4:
		{
			CPackDynamicDlg m_dlg;
	        m_dlg.DoModal();
			break;
		}		
	default:
		break;
	}
	
}

⌨️ 快捷键说明

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