advancedlg.cpp
来自「Visual C++编写的虚拟环绕声系统」· C++ 代码 · 共 2,022 行 · 第 1/5 页
CPP
2,022 行
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CAdvanceDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
////////////////
// MY CODE STARTS HERE
////////////////
// 重画界面上的位图 pBitmap
if (RedrawMyself==TRUE)
{
CDC pDisplayMemDC;
CClientDC dc(this);
pDisplayMemDC.CreateCompatibleDC(&dc);
pDisplayMemDC.SelectObject(&pBitmap);
dc.BitBlt(15,10,100,90,&pDisplayMemDC,0,0,SRCCOPY);
}
////////////////////////
// ME CODE ENDS HERE
//////////////////////////
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CAdvanceDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
/*
void CAdvanceDlg::OnCdRadio()
{
// TODO: Add your control notification handler code here
/////////////
// MY CODE STARTS HERE
/////////////
int i;
// 如果没有处于 WORKSTATE_CD 状态,则重新绘制控制面板
if (WorkState!=WORKSTATE_CD)
{
CRect CDWndRect;
// 如果处于 WORKSTATE_INTRODUCE 状态,取得窗口大小后,
// 删除 INTRODUCE 窗口
if (WorkState==WORKSTATE_INTRODUCE)
{
CWnd* IntroduceWndPointer;
IntroduceWndPointer=GetDlgItem(IDC_INTRODUCE_STATIC);
IntroduceWndPointer->GetWindowRect(&CDWndRect);
IntroduceWndPointer->DestroyWindow();
GetDlgItem(IDC_BEGIN_STATIC)->DestroyWindow();
}
// 如果处于 WORKSTATE_MIC 状态,取得窗口大小后,
// 删除 MIC 窗口
if (WorkState==WORKSTATE_MIC)
{
CWnd* MICWndPointer;
MICWndPointer=GetDlgItem(ID_MICWND_STATIC);
MICWndPointer->GetWindowRect(&CDWndRect);
MICWndPointer->DestroyWindow();
GetDlgItem(ID_MICINTRODUCE_STATIC)->DestroyWindow();
GetDlgItem(ID_MICPLAY_BUTTON)->DestroyWindow();
GetDlgItem(ID_MICSTOP_BUTTON)->DestroyWindow();
// 释放 MIC 的工作缓冲区
for (i=0;i<DataBufferNumber;i++)
{
if ((MICDataHDR[i]->lpData)!=NULL)
{
GlobalUnlock(MICDataHDR[i]->lpData);
GlobalFree(MICDataHDR[i]->lpData);
}
waveInReset(hWaveIn);
waveInClose(hWaveIn);
waveOutReset(hWaveOut);
waveOutClose(hWaveOut);
}
}
// 如果处于 WORKSTATE_LINE 状态,取得窗口大小后,
// 删除 LINE 窗口
if (WorkState==WORKSTATE_LINE)
{
CWnd* LineWndPointer;
LineWndPointer=GetDlgItem(ID_LINEWND_STATIC);
LineWndPointer->GetWindowRect(&CDWndRect);
LineWndPointer->DestroyWindow();
GetDlgItem(ID_LINEINTRODUCE_STATIC)->DestroyWindow();
GetDlgItem(ID_LINEPLAY_BUTTON)->DestroyWindow();
GetDlgItem(ID_LINESTOP_BUTTON)->DestroyWindow();
// 释放 LINE 的工作缓冲区
for (i=0;i<DataBufferNumber;i++)
{
if ((LineDataHDR[i]->lpData)!=NULL)
{
GlobalUnlock(LineDataHDR[i]->lpData);
GlobalFree(LineDataHDR[i]->lpData);
}
waveInReset(hWaveIn);
waveInClose(hWaveIn);
waveOutReset(hWaveOut);
waveOutClose(hWaveOut);
}
}
// 如果处于 WORKSTATE_WAV 状态,取得窗口大小后,
// 删除 WAV 窗口以及 WAV 窗口内的所有控件
if (WorkState==WORKSTATE_WAV)
{
CWnd* WAVWndPointer;
WAVWndPointer=GetDlgItem(ID_WAVWND_STATIC);
WAVWndPointer->GetWindowRect(&CDWndRect);
WAVWndPointer->DestroyWindow();
GetDlgItem(ID_WAVPLAY_BUTTON)->DestroyWindow();
GetDlgItem(ID_WAVSTOP_BUTTON)->DestroyWindow();
GetDlgItem(ID_WAVPAUSE_BUTTON)->DestroyWindow();
GetDlgItem(ID_WAVLIST_BUTTON)->DestroyWindow();
GetDlgItem(ID_WAVFILENAME_STATIC)->DestroyWindow();
GetDlgItem(ID_WAVFILENAMECOUNTER_STATIC)->DestroyWindow();
// 释放 WAV, WAVDelayData, TempData 的工作缓冲区
for (i=0;i<DataBufferNumber;i++)
{
if ((WAVDataHDR[i]->lpData)!=NULL)
{
GlobalUnlock(WAVDataHDR[i]->lpData);
GlobalFree(WAVDataHDR[i]->lpData);
}
waveOutReset(hWaveOut);
waveOutClose(hWaveOut);
}
if ((WAVDelayData->lpData)!=NULL) GlobalFreePtr(WAVDelayData);
if ((TempData->lpData)!=NULL) GlobalFreePtr(TempData);
}
// 绘制 CD 窗口
ScreenToClient(CDWndRect);
CDWnd.Create
("CD",
WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
CDWndRect,
this,
ID_CDWND_STATIC
);
// 绘制 CD 窗口内的各个控件
// 绘制各个按钮控件
int CDControlButtonNumber=5;
int CDControlButtonWidth=CDWndRect.Width()/(CDControlButtonNumber+1)/3*3;
int CDControlButtonHeight=CDWndRect.Height()/5+4;
CRect CDControlButton;
// 绘制 CD 窗口中的 PLAY 按钮
CDControlButton.left =CDWndRect.left+CDControlButtonWidth/2;
CDControlButton.top =CDWndRect.top+CDWndRect.Height()/2;
CDControlButton.right =CDControlButton.left+CDControlButtonWidth;
CDControlButton.bottom=CDControlButton.top+CDControlButtonHeight;
CDPlay.Create
(
"Play",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON|BS_ICON,
CDControlButton,
this,
ID_CDPLAY_BUTTON
);
((CButton*)GetDlgItem(ID_CDPLAY_BUTTON))->SetIcon(AfxGetApp()->LoadIcon(IDI_PLAY_ICON));
// 绘制 CD 窗口中的 STOP 按钮
CDControlButton.left =CDControlButton.right;
CDControlButton.right =CDControlButton.left+CDControlButtonWidth;
CDStop.Create
(
"Stop",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON|BS_ICON,
CDControlButton,
this,
ID_CDSTOP_BUTTON
);
((CButton*)GetDlgItem(ID_CDSTOP_BUTTON))->SetIcon(AfxGetApp()->LoadIcon(IDI_STOP_ICON));
// 绘制 CD 窗口中的 PAUSE 按钮
CDControlButton.left =CDControlButton.right;
CDControlButton.right =CDControlButton.left+CDControlButtonWidth;
CDPause.Create
(
"Pause",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON|BS_ICON,
CDControlButton,
this,
ID_CDPAUSE_BUTTON
);
((CButton*)GetDlgItem(ID_CDPAUSE_BUTTON))->SetIcon(AfxGetApp()->LoadIcon(IDI_PAUSE_ICON));
// 绘制 CD 窗口中的 Prie 按钮
CDControlButton.left =CDControlButton.right;
CDControlButton.right =CDControlButton.left+CDControlButtonWidth;
CDPrie.Create
(
"Prievous",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON|BS_ICON,
CDControlButton,
this,
ID_CDPRIE_BUTTON
);
((CButton*)GetDlgItem(ID_CDPRIE_BUTTON))->SetIcon(AfxGetApp()->LoadIcon(IDI_PRIE_ICON));
// 绘制 CD 窗口中的 Next 按钮
CDControlButton.left =CDControlButton.right;
CDControlButton.right =CDControlButton.left+CDControlButtonWidth;
CDNext.Create
(
"Next",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON|BS_ICON,
CDControlButton,
this,
ID_CDNEXT_BUTTON
);
((CButton*)GetDlgItem(ID_CDNEXT_BUTTON))->SetIcon(AfxGetApp()->LoadIcon(IDI_NEXT_ICON));
// 绘制各个 Track 按钮
int TrackButtonNumber=15;
int TrackButtonWidth=CDControlButtonWidth*CDControlButtonNumber/TrackButtonNumber;
int TrackButtonHeight=TrackButtonWidth;
CRect CDTrackButton;
// 绘制 CD 窗口中的 Track1 按钮
CDTrackButton.left =CDWndRect.left+CDControlButtonWidth/2;
CDTrackButton.top =CDControlButton.bottom;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrackButton.bottom=CDTrackButton.top+TrackButtonHeight;
CDTrack1.Create
(
"1",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK1_BUTTON
);
// 绘制 CD 窗口中的 Track2 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack2.Create
(
"2",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK2_BUTTON
);
// 绘制 CD 窗口中的 Track3 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack3.Create
(
"3",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK3_BUTTON
);
// 绘制 CD 窗口中的 Track4 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack4.Create
(
"4",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK4_BUTTON
);
// 绘制 CD 窗口中的 Track5 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack5.Create
(
"5",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK5_BUTTON
);
// 绘制 CD 窗口中的 Track6 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack6.Create
(
"6",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK6_BUTTON
);
// 绘制 CD 窗口中的 Track7 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack7.Create
(
"7",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK7_BUTTON
);
// 绘制 CD 窗口中的 Track8 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack8.Create
(
"8",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK8_BUTTON
);
// 绘制 CD 窗口中的 Track9 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack9.Create
(
"9",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK9_BUTTON
);
// 绘制 CD 窗口中的 Track10 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack10.Create
(
"10",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK10_BUTTON
);
// 绘制 CD 窗口中的 Track11 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack11.Create
(
"11",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
this,
ID_CDTRACK11_BUTTON
);
// 绘制 CD 窗口中的 Track12 按钮
CDTrackButton.left =CDTrackButton.right;
CDTrackButton.right =CDTrackButton.left+TrackButtonWidth;
CDTrack12.Create
(
"12",
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
CDTrackButton,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?