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 + -
显示快捷键?