controldlg.cpp
来自「Visual C++编写的虚拟环绕声系统」· C++ 代码 · 共 574 行 · 第 1/2 页
CPP
574 行
// ControlDlg.cpp : implementation file
//
#include "stdafx.h"
#include "advance.h"
#include "ControlDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////
// MY CODE STARTS HERE
/////////////////
// 声明一个全局变量,用于把 CAdvance 类中的 m_ModeState
// 传递给 CControlDlg 类中的 m_ModeState
extern int ModeState;
/////////////////
// MY CODE ENDS HERE
/////////////////
/////////////////////////////////////////////////////////////////////////////
// CControlDlg dialog
CControlDlg::CControlDlg(CWnd* pParent /*=NULL*/)
: CDialog(CControlDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CControlDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_hControlIcon = AfxGetApp()->LoadIcon(IDI_CONTROL_ICON);
}
void CControlDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CControlDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CControlDlg, CDialog)
//{{AFX_MSG_MAP(CControlDlg)
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_FILTER_BUTTON, OnFilterButton)
ON_WM_HSCROLL()
ON_BN_CLICKED(IDC_RESET_BUTTON, OnResetButton)
ON_NOTIFY(NM_OUTOFMEMORY, IDC_DELAY_SLIDER, OnOutofmemoryDelaySlider)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CControlDlg message handlers
BOOL CControlDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CMenu* pSysMenu = GetSystemMenu(FALSE);
pSysMenu->DeleteMenu(0,MF_BYPOSITION);
pSysMenu->DeleteMenu(1,MF_BYPOSITION);
pSysMenu->DeleteMenu(2,MF_BYPOSITION);
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hControlIcon, TRUE); // Set big icon
SetIcon(m_hControlIcon, FALSE); // Set small icon
//////////////////
// MY CODE STARTS HERE
//////////////////
// 从全局变量 ModeState 中取得模式状态
int m_ModeState=ModeState;
// 如果 ModeState 处于 SRS 状态,则使 3D 控制的控件失效
if (m_ModeState==MODESTATE_SRS)
{
((CButton*)GetDlgItem(IDC_3D_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_HORIZONTAL_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_HORIZONTALCOUNTER_STATIC))->EnableWindow(FALSE);
// ((CButton*)GetDlgItem(IDC_HORIZONTALANGLE_STATIC))->EnableWindow(FALSE);
((CSliderCtrl*)GetDlgItem(IDC_HORIZONTAL_SLIDER))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_VERTICAL_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_VERTICALCOUNTER_STATIC))->EnableWindow(FALSE);
// ((CButton*)GetDlgItem(IDC_VERTICALANGLE_STATIC))->EnableWindow(FALSE);
((CSliderCtrl*)GetDlgItem(IDC_VERTICAL_SLIDER))->EnableWindow(FALSE);
}
// 如果 ModeState 处于 3D 状态,则使 SRS 控制的控件失效
else if (m_ModeState==MODESTATE_3D)
{
((CButton*)GetDlgItem(IDC_SRS_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_FILTER_BUTTON))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_SUR_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_SURCOUNTER_STATIC))->EnableWindow(FALSE);
((CSliderCtrl*)GetDlgItem(IDC_SUR_SLIDER))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_MID_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_MIDCOUNTER_STATIC))->EnableWindow(FALSE);
((CSliderCtrl*)GetDlgItem(IDC_MID_SLIDER))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_DELAY_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_DELAYCOUNTER_STATIC))->EnableWindow(FALSE);
((CSliderCtrl*)GetDlgItem(IDC_DELAY_SLIDER))->EnableWindow(FALSE);
}
// 如果 ModeState 处于 Normal 状态,则使 SRS 和 3D 控制的控件都失效
else
{
((CButton*)GetDlgItem(IDC_3D_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_HORIZONTAL_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_HORIZONTALCOUNTER_STATIC))->EnableWindow(FALSE);
// ((CButton*)GetDlgItem(IDC_HORIZONTALANGLE_STATIC))->EnableWindow(FALSE);
((CSliderCtrl*)GetDlgItem(IDC_HORIZONTAL_SLIDER))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_VERTICAL_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_VERTICALCOUNTER_STATIC))->EnableWindow(FALSE);
// ((CButton*)GetDlgItem(IDC_VERTICALANGLE_STATIC))->EnableWindow(FALSE);
((CSliderCtrl*)GetDlgItem(IDC_VERTICAL_SLIDER))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_SRS_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_FILTER_BUTTON))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_SUR_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_SURCOUNTER_STATIC))->EnableWindow(FALSE);
((CSliderCtrl*)GetDlgItem(IDC_SUR_SLIDER))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_MID_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_MIDCOUNTER_STATIC))->EnableWindow(FALSE);
((CSliderCtrl*)GetDlgItem(IDC_MID_SLIDER))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_DELAY_STATIC))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_DELAYCOUNTER_STATIC))->EnableWindow(FALSE);
((CSliderCtrl*)GetDlgItem(IDC_DELAY_SLIDER))->EnableWindow(FALSE);
}
TCHAR szText[16];
SURSlider=(CSliderCtrl*)GetDlgItem(IDC_SUR_SLIDER);
SURSlider->SetRange(0,39);
SURSlider->SetPageSize(2);
SURSlider->SetLineSize(2);
SURSlider->SetPos((int)SURCounter);
wsprintf( szText, "%i", (int)SURCounter);
SetDlgItemText(IDC_SURCOUNTER_STATIC, szText);
MIDSlider=(CSliderCtrl*)GetDlgItem(IDC_MID_SLIDER);
MIDSlider->SetRange(0,39);
MIDSlider->SetPageSize(2);
MIDSlider->SetLineSize(2);
MIDSlider->SetPos((int)MIDCounter);
wsprintf( szText, "%i", (int)MIDCounter);
SetDlgItemText(IDC_MIDCOUNTER_STATIC, szText);
DelaySlider=(CSliderCtrl*)GetDlgItem(IDC_DELAY_SLIDER);
DelaySlider->SetRange(0,39);
DelaySlider->SetPageSize(2);
DelaySlider->SetLineSize(2);
DelaySlider->SetPos(DelayCounter);
wsprintf( szText, "%i", (int)DelayCounter);
SetDlgItemText(IDC_DELAYCOUNTER_STATIC, szText);
HorizontalSlider=(CSliderCtrl*)GetDlgItem(IDC_HORIZONTAL_SLIDER);
HorizontalSlider->SetRange(0,35);
HorizontalSlider->SetPageSize(1);
HorizontalSlider->SetLineSize(1);
HorizontalSlider->SetPos(HorizontalCounter);
wsprintf( szText, "%i", (HorizontalCounter*10) );
SetDlgItemText(IDC_HORIZONTALCOUNTER_STATIC, szText);
VerticalSlider=(CSliderCtrl*)GetDlgItem(IDC_VERTICAL_SLIDER);
VerticalSlider->SetRange(0,10);
VerticalSlider->SetPageSize(1);
VerticalSlider->SetLineSize(1);
VerticalSlider->SetPos(VerticalCounter+4);
wsprintf( szText, "%i", (VerticalCounter*10) );
SetDlgItemText(IDC_VERTICALCOUNTER_STATIC, szText);
/*
////////////////////////////////////////////////////////////
F600HZSlider=(CSliderCtrl*)GetDlgItem(IDC_600HZ_SLIDER);
F600HZSlider->SetRange(0,100);
F600HZSlider->SetPageSize(5);
F600HZSlider->SetLineSize(5);
F600HZSlider->SetPos(F600HZCounter+50);
wsprintf( szText, "%i", F600HZCounter );
SetDlgItemText(IDC_600HZCOUNTER_STATIC, szText );
F1KHZSlider=(CSliderCtrl*)GetDlgItem(IDC_1KHZ_SLIDER);
F1KHZSlider->SetRange(0,100);
F1KHZSlider->SetPageSize(5);
F1KHZSlider->SetLineSize(5);
F1KHZSlider->SetPos(F1KHZCounter+50);
wsprintf( szText, "%i", F1KHZCounter );
SetDlgItemText(IDC_1KHZCOUNTER_STATIC, szText );
F3KHZSlider=(CSliderCtrl*)GetDlgItem(IDC_3KHZ_SLIDER);
F3KHZSlider->SetRange(0,100);
F3KHZSlider->SetPageSize(5);
F3KHZSlider->SetLineSize(5);
F3KHZSlider->SetPos(F3KHZCounter+50);
wsprintf( szText, "%i", F3KHZCounter );
SetDlgItemText(IDC_3KHZCOUNTER_STATIC, szText );
F6KHZSlider=(CSliderCtrl*)GetDlgItem(IDC_6KHZ_SLIDER);
F6KHZSlider->SetRange(0,100);
F6KHZSlider->SetPageSize(5);
F6KHZSlider->SetLineSize(5);
F6KHZSlider->SetPos(F6KHZCounter+50);
wsprintf( szText, "%i", F6KHZCounter );
SetDlgItemText(IDC_6KHZCOUNTER_STATIC, szText );
F12KHZSlider=(CSliderCtrl*)GetDlgItem(IDC_12KHZ_SLIDER);
F12KHZSlider->SetRange(0,100);
F12KHZSlider->SetPageSize(5);
F12KHZSlider->SetLineSize(5);
F12KHZSlider->SetPos(F12KHZCounter+50);
wsprintf( szText, "%i", F12KHZCounter );
SetDlgItemText(IDC_12KHZCOUNTER_STATIC, szText );
F18KHZSlider=(CSliderCtrl*)GetDlgItem(IDC_18KHZ_SLIDER);
F18KHZSlider->SetRange(0,100);
F18KHZSlider->SetPageSize(5);
F18KHZSlider->SetLineSize(5);
F18KHZSlider->SetPos(F18KHZCounter+50);
wsprintf( szText, "%i", F18KHZCounter );
SetDlgItemText(IDC_18KHZCOUNTER_STATIC, szText );
*/
//////////////////
// MY CODE ENDS HERE
//////////////////
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
HBRUSH CControlDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
//////////////////
// MY CODE STARTS HERE
/////////////////
// 设置静态文本颜色(品红色)
pDC->SetTextColor(RGB(255,0,255));
/////////////////
// MY CODE ENDS HERE
/////////////////
return hbr;
}
void CControlDlg::OnFilterButton()
{
// TODO: Add your control notification handler code here
// 打开文件对话框,取得文件名 FilterPathName
LPTSTR lptDir;
lptDir=(LPTSTR)malloc(200);
GetCurrentDirectory(200,lptDir);
static char BASED_CODE szFilter[] = "data Files (*.dat)|*.dat|All Files (*.*)|*.*||";
CFileDialog FileDlg(TRUE,"dat","*.dat",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
CString FilterPathName;
if (FileDlg.DoModal()==IDOK)
{
FilterPathName=FileDlg.GetPathName();
// 从滤波器数据文件中得到128点的滤波器时域数据 FilterTimeData
short FilterTimeDataLength=128;
FILE *FilterFile;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?