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