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

📄 interruptmgt.cpp

📁 通过VC源代码
💻 CPP
字号:
// InterruptMgt.cpp : implementation file
//

#include "stdafx.h"
#include "Simulator.h"
#include "regvars.h"
#include "NumericEdit.h"
#include "InterruptMgt.h"
#include "help.h"
#include "uwm.h"
#include "err.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CInterruptMgt dialog


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


void CInterruptMgt::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CInterruptMgt)
	DDX_Control(pDX, IDC_PERR_CAPTION, c_c_ProbErr);
	DDX_Control(pDX, IDC_SPINSPURIOUS, c_SpinSpurious);
	DDX_Control(pDX, IDC_SPINPOVR, c_SpinOvr);
	DDX_Control(pDX, IDC_SPINPERR, c_SpinErr);
	DDX_Control(pDX, IDC_PSPURIOUS, c_ProbSpurious);
	DDX_Control(pDX, IDC_POVR, c_ProbOvr);
	DDX_Control(pDX, IDC_PERR, c_ProbErr);
	DDX_Control(pDX, IDC_SPURIOUS, c_Spurious);
	DDX_Control(pDX, IDC_SPINLOSE, c_SpinLose);
	DDX_Control(pDX, IDC_PLOSE, c_ProbLose);
	DDX_Control(pDX, IDC_LOSE, c_Lose);
	DDX_Control(pDX, IDC_BOTH, c_Both);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CInterruptMgt, CDialog)
	//{{AFX_MSG_MAP(CInterruptMgt)
	ON_BN_CLICKED(IDCANCEL, OnCloseDialog)
	ON_BN_CLICKED(IDC_BOTH, OnBoth)
	ON_BN_CLICKED(IDC_LOSE, OnLose)
	ON_EN_CHANGE(IDC_PLOSE, OnChangePlose)
	ON_EN_CHANGE(IDC_PSPURIOUS, OnChangePspurious)
	ON_BN_CLICKED(IDC_SPURIOUS, OnSpurious)
	ON_EN_CHANGE(IDC_PERR, OnChangePerr)
	ON_EN_CHANGE(IDC_POVR, OnChangePovr)
	ON_BN_CLICKED(IDC_HELP_COMMAND, OnHelp)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_CLOSE, OnCloseDialog)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CInterruptMgt message handlers


/****************************************************************************
*                        CInterruptMgt::updateControls
* Result: void
*       
* Effect: 
*       Updates all the controls
****************************************************************************/

void CInterruptMgt::updateControls()
    {
     BOOL enable = c_Spurious.GetCheck() == BST_CHECKED || c_Both.GetCheck() == BST_CHECKED;
     BOOL caption = enable;

     c_SpinSpurious.EnableWindow(enable);
     c_ProbSpurious.EnableWindow(enable);

     enable = c_Lose.GetCheck() == BST_CHECKED || c_Both.GetCheck() == BST_CHECKED;

     caption |= enable;

     c_SpinLose.EnableWindow(enable);
     c_ProbLose.EnableWindow(enable);

     caption |= c_Both.GetCheck() == BST_CHECKED;

     c_c_ProbErr.EnableWindow(caption);
    }


/****************************************************************************
*                         CInterruptMgt::OnInitDialog
* Result: BOOL
*       
* Effect: 
*       Initializes all the controls
****************************************************************************/

BOOL CInterruptMgt::OnInitDialog() 
{
 	initialized = FALSE;

	CDialog::OnInitDialog();
	
 	c_Lose.SetCheck(BST_CHECKED);

 	c_SpinSpurious.SetRange(0, 100);
	c_SpinOvr.SetRange(0, 100);
	c_SpinErr.SetRange(0, 100);
	c_SpinLose.SetRange(0, 100);

	RegistryInt pSpurious(IDS_PROB_SPURIOUS);
	pSpurious.load(0);
	c_SpinSpurious.SetPos(pSpurious.value);

	RegistryInt pOvrUnd(IDS_PROB_OVR_UND);
	pOvrUnd.load(0);
	c_SpinOvr.SetPos(pOvrUnd.value);

	RegistryInt pErr(IDS_PROB_ERR);
	pErr.load(0);
	c_SpinErr.SetPos(pErr.value);

	RegistryInt pLost(IDS_PROB_LOST);
	pLost.load(0);
	c_SpinLose.SetPos(pLost.value);

	initialized = TRUE;

	updateControls();

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

void CInterruptMgt::OnBoth() 
{
 updateControls();
	
}

void CInterruptMgt::OnLose() 
{
 updateControls();
}

void CInterruptMgt::OnChangePlose() 
{
 if(!initialized)
    return;

 if(c_ProbLose.GetWindowInt() > 100)
    c_ProbLose.SetWindowText(100);

 GetParent()->SendMessage(UWM_SET_PROB, PROB_LOST, c_ProbLose.GetWindowInt());

}

void CInterruptMgt::OnChangePspurious() 
{
 if(!initialized)
    return;

 if(c_ProbSpurious.GetWindowInt() > 100)
    c_ProbSpurious.SetWindowText(100);
	
 GetParent()->SendMessage(UWM_SET_PROB, PROB_SPURIOUS, c_ProbSpurious.GetWindowInt());
}

void CInterruptMgt::OnSpurious() 
{
 updateControls();	
}

void CInterruptMgt::OnChangePerr() 
{
 if(!initialized)
    return;
 if(c_ProbErr.GetWindowInt() > 100)
    c_ProbErr.SetWindowText(100);	
 GetParent()->SendMessage(UWM_SET_PROB, PROB_ERR, c_ProbErr.GetWindowInt());
}

void CInterruptMgt::OnChangePovr() 
{
 if(!initialized)
    return;
 if(c_ProbOvr.GetWindowInt() > 100)
    c_ProbOvr.SetWindowText(100);
 GetParent()->SendMessage(UWM_SET_PROB, PROB_OVRUND, c_ProbOvr.GetWindowInt());
}

/****************************************************************************
*                            CInterruptMgt::OnHelp
* Result: void
*       
* Effect: 
*       Invokes help
****************************************************************************/

void CInterruptMgt::OnHelp() 
{
 WinHelp(HID_INTERRUPT_MGT, HELP_CONTEXT);	
}

/****************************************************************************
*                          CInterruptMgt::OnDestroy
* Result: void
*       
* Effect: 
*       Notifies the parent that the window is shutting down
****************************************************************************/

void CInterruptMgt::OnDestroy() 
{
 	GetParent()->SendMessage(UWM_IMGR_CLOSE);	

	CDialog::OnDestroy();
}

void CInterruptMgt::OnCloseDialog() 
{
 DestroyWindow();	
}

void CInterruptMgt::PostNcDestroy() 
{
 	delete this;
	
	CDialog::PostNcDestroy();
}

⌨️ 快捷键说明

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