📄 faultsdlg.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 + -