📄 new.cpp
字号:
LineTo(hdc,522,WAVEHORIZON);
//coordinate for Frequency
SelectObject(hdc, hpenW);
MoveToEx(hdc,10,380,NULL);
LineTo(hdc,522,380); //horizon
for (i=0;i<22;i++)
{
MoveToEx(hdc,(int)(10+i*1000/FREQSCALE),380,NULL);
LineTo(hdc,(int)(10+i*1000/FREQSCALE),200);
}
RECT crect;
crect.left=10;
crect.top=382;
crect.right=crect.left+100;
crect.bottom=crect.top+100;
::SetBkColor(hdc,BACKGROUND);
font=CreateFont(12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,FF_SWISS, "Arial");
::SelectObject (hdc, font);
::SetTextColor(hdc,RGB(0,0,0));
DrawText(hdc,"0",1,&crect,DT_LEFT|DT_TOP);
//scale mark
for (i=1;i<21;i++)
{
char str[2];
crect.left=10+ (int)(i*1000/FREQSCALE);
crect.right=crect.left+10+(int)(i/10)*3;
sprintf(str,"%dk",i);
DrawText(hdc,str,4,&crect,DT_LEFT|DT_TOP);
}
MoveToEx(hdc,6,204,NULL);
LineTo(hdc,10,200);
LineTo(hdc,14,204);
MoveToEx(hdc,518,376,NULL);
LineTo(hdc,522,380);
LineTo(hdc,518,384);
//coordinate for Frequency-response
//scale
for (i=1;i<22;i++)
{
MoveToEx(hdc,(int)(10+i*1000/FREQSCALE),600,NULL);
LineTo(hdc,(int)(10+i*1000/FREQSCALE),597);
}
crect.left=10;
crect.top=600;
crect.right=crect.left+100;
crect.bottom=crect.top+100;
::SetBkColor(hdc,BACKGROUND);
::SelectObject (hdc, font);
::SetTextColor(hdc,RGB(0,0,0));
DrawText(hdc,"0",1,&crect,DT_LEFT|DT_TOP);
//scale mark
for (i=1;i<21;i++)
{
char str[2];
crect.left=10+ (int)(i*1000/FREQSCALE);
crect.right=crect.left+10+(int)(i/10)*3;
sprintf(str,"%dk",i);
DrawText(hdc,str,4,&crect,DT_LEFT|DT_TOP);
}
//horizon
SelectObject(hdc, hpenW);
MoveToEx(hdc,10,600,NULL);
LineTo(hdc,522,600);
MoveToEx(hdc,518,596,NULL);
LineTo(hdc,522,600);
LineTo(hdc,518,604);
//vertical
MoveToEx(hdc,10,600,NULL);
LineTo(hdc,10,430);
LineTo(hdc,6,434);
MoveToEx(hdc,10,430,NULL);
LineTo(hdc,14,434);
break;
case WIM_DATA:
waveInUnprepareHeader(hwi,(LPWAVEHDR)lParam,sizeof(WAVEHDR));
nextWavHdr=(currWavHdr-1+MAX_INQUEU)%MAX_INQUEU;
currWavHdr=(currWavHdr+1)%MAX_INQUEU;
if(b_playing)
{
pwhi=&whis[nextWavHdr];
pwhi->dwFlags=0;
pwhi->dwLoops=0;
waveInPrepareHeader(hwi,pwhi,sizeof(WAVEHDR));
waveInAddBuffer(hwi,pwhi,sizeof(WAVEHDR));
}
whdc=GetDC(hWnd);
DrawWave((WAVEHDR *)lParam,whdc);
if(pfnFft)
DrawFreq((WAVEHDR *)lParam,whdc);
ReleaseDC(hWnd,whdc);
break;
case WM_DESTROY:
b_playing=FALSE;
waveInReset(hwi);
for(i=0;i<MAX_INQUEU;i++)
{
waveInUnprepareHeader(hwi,pwhi,sizeof(WAVEHDR));
}
waveInClose(hwi);
ParaRecord();
DeleteObject(hpenG);
DeleteObject(hpenB);
// FreeLibrary(hMod);
CloseHandle(hAudioThread);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}
LRESULT CALLBACK ControlProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HWND hParent;
int id = GetWindowLong (hwnd, GWL_ID) ;
hParent=GetParent(hwnd);
switch (message)
{
case WM_KEYDOWN :
if (wParam == VK_TAB)
SetFocus (GetDlgItem (GetParent (hwnd),(id + (GetKeyState (VK_SHIFT) < 0 ? 8 : 1)) % 7)) ;
///*
if(wParam==VK_RETURN)
{
if (::GetFocus()==GetDlgItem(hParent,IDB_START))
::SendMessage(hParent,WM_COMMAND,(WPARAM)IDB_START,NULL);
if (::GetFocus()==GetDlgItem(hParent,IDB_STOP))
::SendMessage(hParent,WM_COMMAND,(WPARAM)IDB_STOP,NULL);
if (::GetFocus()==GetDlgItem(hParent,IDB_EXIT))
::SendMessage(hParent,WM_COMMAND,(WPARAM)IDB_EXIT,NULL);
if (::GetFocus()==GetDlgItem(hParent,IDE_FREQ))
{
SetFocus(GetDlgItem(hParent,IDE_FREQDURA));
break;
}
if (::GetFocus()==GetDlgItem(hParent,IDE_FREQDURA))
{
SetFocus(GetDlgItem(hParent,IDE_WAVEVOLUME));
break;
}
if (::GetFocus()==GetDlgItem(hParent,IDE_WAVEVOLUME))
{
SetFocus(GetDlgItem(hParent,IDB_START));
break;
}
}
//*/
break;
case WM_SETFOCUS :
idFocus = id ;
break ;
}
return CallWindowProc (GlobalProc[id], hwnd, message, wParam,lParam);
}
void RrectIni()
{
rectFreqCheck.left=540;
rectFreqCheck.top=540;
rectFreqCheck.right=rectFreqCheck.left+250;
rectFreqCheck.bottom=rectFreqCheck.top+30;
rectFreqResponseCheck.left=540;
rectFreqResponseCheck.top=570;
rectFreqResponseCheck.right=rectFreqResponseCheck.left+250;
rectFreqResponseCheck.bottom=rectFreqResponseCheck.top+30;
rectTest.left=540;
rectTest.top=600;
rectTest.right=rectTest.left+200;
rectTest.bottom=rectTest.top+30;
}
void ParaInit(int &FreqChecked,int &FreqDura,int &WaveVolume,int &TestTime)
{
ifstream InitFile;
char ParaName[20];
int i,Para[4];
char LineHead[22];
int temp;
i=0;
for (i=0;i<4;i++)
Para[i]=0;
i=0;
if( GetFileAttributes("config.dat")!=0xFFFFFFFF)
{
InitFile.open("config.dat");
while(InitFile>>ParaName>>Para[i++])
{
;
}
InitFile.close();
}
if (Para[0]==0)
FreqChecked=1000;
else
FreqChecked=Para[0];
if (Para[1]==0)
FreqDura=2;
else
FreqDura=Para[1];
if (Para[2]==0)
WaveVolume=12000;
else
WaveVolume=Para[2];
if (Para[3]==0)
TestTime=20;
else
TestTime=Para[3];
InitFile.open("Amplify.dat");
while(InitFile>>LineHead>>temp)
{
if (strcmp("TxMax:",LineHead)==0)
iTxMax=temp;
if (strcmp("TxMin:",LineHead)==0)
iTxMin=temp;
if (strcmp("RxMax:",LineHead)==0)
iRxMax=temp;
if (strcmp("RxMin:",LineHead)==0)
iRxMin=temp;
}
InitFile.close();
}
void ParaRecord()
{
GetWindowPara();
//FREQCHECK,FREQCHECKTIME,WAVEVOLUME,TESTTIME
ofstream InitFile;
InitFile.open("config.dat");
InitFile<<"FrequencyChecked:\t"<<FREQCHECK<<'\n';
InitFile<<"FrequencyDuration:\t"<<FREQCHECKTIME<<'\n';
InitFile<<"WaveVolume:\t"<<WAVEVOLUME<<'\n';
InitFile<<"TestTime:\t"<<TESTTIME<<'\n';
InitFile.close();
}
void SetWindowPara()
{
char TempPara[10];
itoa(FREQCHECK,TempPara,10);
SetWindowText(GetDlgItem(hGlobalWnd,IDE_FREQ),TempPara);
itoa(FREQCHECKTIME,TempPara,10);
SetWindowText(GetDlgItem(hGlobalWnd,IDE_FREQDURA),TempPara);
itoa(WAVEVOLUME,TempPara,10);
SetWindowText(GetDlgItem(hGlobalWnd,IDE_WAVEVOLUME),TempPara);
itoa(TESTTIME,TempPara,10);
SetWindowText(GetDlgItem(hGlobalWnd,IDE_TESTTIME),TempPara);
}
void GetWindowPara()
{
char TempPara[10];
GetWindowText(GetDlgItem(hGlobalWnd,IDE_FREQ),TempPara,10);
FREQCHECK=atoi(TempPara);
GetWindowText(GetDlgItem(hGlobalWnd,IDE_FREQDURA),TempPara,10);
FREQCHECKTIME=atoi(TempPara);
GetWindowText(GetDlgItem(hGlobalWnd,IDE_WAVEVOLUME),TempPara,10);
WAVEVOLUME=atoi(TempPara);
GetWindowText(GetDlgItem(hGlobalWnd,IDE_TESTTIME),TempPara,10);
TESTTIME=atoi(TempPara);
SetSystemWaveVolume();
}
void DisplayTxPass(HDC hdc)
{
::SetTextColor(hdc,PASSCOLOR);
::SetBkColor(hdc,BACKGROUND);
::DrawText(hdc,"HeadSet Transmit Check PASS",strlen("HeadSet Transmit Check PASS"),
&rectFreqCheck,DT_LEFT|DT_TOP|DT_INTERNAL);
}
void InvalidDisplayTxPass(HDC hdc)
{
InvalidateRect(hGlobalWnd,&rectFreqCheck,TRUE);
}
void DisplayRxPass(HDC hdc)
{
::SetTextColor(hdc,PASSCOLOR);
::SetBkColor(hdc,BACKGROUND);
::DrawText(hdc,"HeadSet Receive Check PASS",strlen("HeadSet Receive Check PASS"),
&rectFreqResponseCheck,DT_LEFT|DT_TOP|DT_INTERNAL);
}
void InvalidDisplayRxPass(HDC hdc)
{
InvalidateRect(hGlobalWnd,&rectFreqResponseCheck,TRUE);
}
void DisplayTestFail(HDC hdc)
{
::SetTextColor(hdc,FAILCOLOR);
::SetBkColor(hdc,BACKGROUND);
::DrawText(hdc,"TEST FAIL",strlen("TEST FAIL"),
&rectTest,DT_LEFT|DT_TOP|DT_INTERNAL);
}
void InvalidTestFail(HDC hdc)
{
InvalidateRect(hGlobalWnd,&rectTest,TRUE);
}
void SetSystemWaveVolume()
{
IVolume* pMasterVolume;
///////////////////Set Wave Volume/////////////////
// Volume control Initialization
pMasterVolume = (IVolume*)new CVolumeOutWave();
if ( !pMasterVolume || !pMasterVolume->IsAvailable())
{
//
}
pMasterVolume->Enable();
pMasterVolume->RegisterNotificationSink(MasterWaveChanged, 0 );
pMasterVolume->SetCurrentVolume(WAVEVOLUME);
///////////////////
}
void FillDevices()
{
WAVEINCAPS wavCaps;
unsigned int i;
unsigned int m_nDev=waveInGetNumDevs();
SendDlgItemMessage(hGlobalWnd, IDL_FREQLIST, LB_RESETCONTENT, 0, NULL );
for(i=0;i<m_nDev;i++) {
ZeroMemory(&wavCaps,sizeof(WAVEINCAPS));
if( MMSYSERR_NOERROR ==
waveInGetDevCaps(i,&wavCaps,sizeof(WAVEINCAPS)) )
SendDlgItemMessage(hGlobalWnd, IDL_DEVLIST, LB_ADDSTRING, 0, LPARAM(wavCaps.szPname) );
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -