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

📄 faultsdlg.cpp

📁 mod_RSsim
💻 CPP
字号:
// FaultsDlg.cpp : implementation file
//

#include "stdafx.h"
#include "mod_rssim.h"
#include "FaultsDlg.h"

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

// control ID's to gray/ungray
int controlArray[] =
{
   IDC_INSERTS,
   IDC_DELETES,
   IDC_CORRUPTS,
   IDC_MISFRAMES,
   IDC_PARITY,
   IDC_IGNORES,
   IDC_DELAYS,
   IDC_DELAYPERIOD,
   IDC_FREQ,
   IDC_BEEP
};


/////////////////////////////////////////////////////////////////////////////
// CFaultsDlg dialog


CFaultsDlg::CFaultsDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CFaultsDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFaultsDlg)
	m_beep = FALSE;
	m_delaysPeriod = 0;
	m_errorFrequency = 0;
	m_insertCharacters = FALSE;
	m_removeCharacters = FALSE;
	m_modifyCharacters = FALSE;
	m_ignoreReq = FALSE;
	m_corruptFraming = FALSE;
	m_parityFaults = FALSE;
	//}}AFX_DATA_INIT
   m_errors = FALSE;
}


void CFaultsDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFaultsDlg)
	DDX_Control(pDX, IDC_FREQ, m_freqSlider);
	DDX_Check(pDX, IDC_BEEP, m_beep);
	DDX_Text(pDX, IDC_DELAYPERIOD, m_delaysPeriod);
	DDV_MinMaxInt(pDX, m_delaysPeriod, 0, 10000);
	DDX_Slider(pDX, IDC_FREQ, m_errorFrequency);
	DDX_Check(pDX, IDC_INSERTS, m_insertCharacters);
	DDX_Check(pDX, IDC_DELETES, m_removeCharacters);
	DDX_Check(pDX, IDC_CORRUPTS, m_modifyCharacters);
	DDX_Check(pDX, IDC_IGNORES, m_ignoreReq);
	DDX_Check(pDX, IDC_MISFRAMES, m_corruptFraming);
	DDX_Check(pDX, IDC_PARITY, m_parityFaults);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFaultsDlg, CDialog)
   ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnTTN_NeedText )
	//{{AFX_MSG_MAP(CFaultsDlg)
	ON_BN_CLICKED(IDC_BEEP, OnBeepClicked)
	ON_BN_CLICKED(IDC_DELAYS, OnDelaysClicked)
	ON_BN_CLICKED(IDC_ENABLE, OnEnableClicked)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFaultsDlg message handlers

BOOL CFaultsDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
   CheckDlgButton(IDC_ENABLE, (m_errorFrequency?1:0));
   CheckDlgButton(IDC_DELAYS, (m_errors?1:0));
   m_freqSlider.SetRange(0, 100);
   m_freqSlider.SetPos(m_errorFrequency);
   OnEnableClicked();   //perform graying

   //TOOLTIPS START
   m_ToolTip.Create (this);
   m_ToolTip.Activate (TRUE);

   CWnd*    pWnd = GetWindow (GW_CHILD);
   while (pWnd)
   {
       int nID = pWnd->GetDlgCtrlID ();
       if (nID != -1)
       {
           m_ToolTip.AddTool (pWnd, pWnd->GetDlgCtrlID ());
       }
       pWnd = pWnd->GetWindow (GW_HWNDNEXT);
   }
   //TOOLTIPS END

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

// ---------------------------- OnBeepClicked ----------------------
void CFaultsDlg::OnBeepClicked() 
{
	// TODO: Add your control notification handler code here
   	
}

// ---------------------------- OnDelaysClicked --------------------
void CFaultsDlg::OnDelaysClicked() 
{
//BOOL enabled;
	
   UpdateData(TRUE);
   m_errors = IsDlgButtonChecked(IDC_DELAYS);
   GetDlgItem(IDC_DELAYPERIOD)->EnableWindow(m_errors);
   if (!m_errors)
   {
      m_delaysPeriod = 0;
      UpdateData(FALSE);
   }
}


// ------------------------------- OnEnableClicked -------------------
void CFaultsDlg::OnEnableClicked() 
{
//BOOL enabled;
	
   // gray/ungray all of the controls
   m_errors = IsDlgButtonChecked(IDC_ENABLE);
   for (int i=0; i<(sizeof(controlArray)/sizeof(controlArray[0]));i++)
      GetDlgItem(controlArray[i])->EnableWindow(m_errors);

   //
   if (m_errors ) // handle special ungraying cases
      OnDelaysClicked();
   else
   {
      //m_errorFrequency = 0;
      //m_freqSlider.SetPos(m_errorFrequency);
   }
} // OnEnableClicked

// ------------------------ OnTTN_NeedText ---------------------------------
// TTN_NEEDTEXT message handler for TOOLTIPS
//
BOOL CFaultsDlg::OnTTN_NeedText( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
{
    TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
    UINT nID =pNMHDR->idFrom;
    if (pTTT->uFlags & TTF_IDISHWND)
    {
        // idFrom is actually the HWND of the tool
        nID = ::GetDlgCtrlID((HWND)nID);
        if(nID)
        {
            pTTT->lpszText = MAKEINTRESOURCE(nID);
            pTTT->hinst = AfxGetResourceHandle();
            return(TRUE);
        }
    }
    return(FALSE);
} // OnTTN_NeedText

BOOL CFaultsDlg::PreTranslateMessage(MSG* pMsg) 
{
    // TOOLTIPS START
    if (m_hWnd)
    {
        m_ToolTip.RelayEvent (pMsg);
        return CDialog::PreTranslateMessage(pMsg);
    }
    return (FALSE);
    // TOOLTIPS END
}

void CFaultsDlg::OnOK() 
{
	// TODO: Add extra validation here
   m_errors = IsDlgButtonChecked(IDC_DELAYS);
	
	CDialog::OnOK();
}

⌨️ 快捷键说明

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