⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailserverdlg.cpp

📁 适合WINDOWS编程的初学者,对掌握WINDOWS编程很有帮助
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				m_play.RedrawWindow();
			}
			m_list.AddString(file[fi]);
			m_list.SetCurSel(fr);
			UpdateData(false);
		}
		//文件名数组保存
		forfor();
	}
}

//编写OnBexit()函数来退出程序

void CMailServerDlg::OnBexit()
{
	Onstop();
	OnOK();
}

//编写Onbhelp()函数来显示帮助对话框


void CMailServerDlg::Onbhelp()
{
	CAboutDlg dlgAbout;
	dlgAbout.DoModal();
}


//编写Onbmim()函数来最小化窗口

void CMailServerDlg::Onbmim()
{
	Thide();
	ShowWindow(SW_HIDE);
}

//编写Onstop()函数来停止播放当前的音频文件

void CMailServerDlg::Onstop()
{
	//取消计数器的显示
	KillTimer(0);
	//定位于歌曲的起始位置
	cdfrom=MCI_MAKE_HMS(0,0,0);
	//向多媒体设备发送消息,关闭多媒体设备
	mciSendCommand(m_count,MCI_CLOSE,0,NULL);
	m_count=0;
	//设置m_play图标,显示可以播放
	m_play.LoadBitmaps(IDB_BITMAPPLAY1,IDB_BITMAPPLAY3);
	//允许用户播放歌曲
	m_flag=true;
	m_play.RedrawWindow();
}

//编写OnTimer()函数,用来显示当前音频文件的播放进度
//时间计数器

void CMailServerDlg::OnTimer(UINT nIDEvent)
{
	CString stime,kk;
	second++;
	CClientDC dc(this);
	//设置放置计数器区域的外观
	dc.SetBkColor(RGB(81,54,166));
	dc.SetTextColor(RGB(215,249,9));
	//设置钟表的显示
	if(second==60)
	{
		minute++;
		second=0;
	}
	if(minute==60)
	{
		hour++;
		minute=0;
	}
	if(hour==24)
	{
		hour=0;
	}
	//显示时间进度
	stime.Format("%02d:%02d:%02d",hour,minute,second);
	dc.TextOut(20,10,stime);
	m_sl.SetPos(cdfrom);
	//显示开始播放时所处的进度
	kk.Format("%d",cdfrom);
	dc.TextOut(110,10,kk);
	DWORD cdf=getinfo(MCI_STATUS_POSITION);
	//获取当前播放文件的信息
	cdfrom=MCI_MAKE_MSF(MCI_MSF_MINUTE(cdf),MCI_MSF_SECOND(cdf),MCI_MSF_FRAME(cdf));
	UpdateData(false);
	//判断时间是否结束,如果结束则开始下一首歌
	//如果当前这首歌是最后一首,则开始播放第一首
	if(getinfo(MCI_STATUS_POSITION)==cdlen)
	{
		hour=0;second=0;minute=0;
		fr++;
		if(fr<=fi)
		{
			m_list.SetCurSel(fr);
			aa=file[fr];
			Onstop();
			OnPlay();
		}
		if(fr>fi)
		{
			fr=0;
			aa=file[fr];
			m_list.SetCurSel(fr);
			Onstop();
			if(m_flag2)
				OnPlay();
		}
	}
	CDialog::OnTimer(nIDEvent);
}

//编写OnRp()函数,当用户单击IDC_RP按钮时,打开应用程序的录音功能,开始录音,
//再次单击IDC_RP按钮,则录音结束,单击IDC_PLAY按钮,则播放录音内容

void CMailServerDlg::OnRp()
{
	//判断是否可以录音
	if(m_flag1)
	{
		m_rp.LoadBitmaps(IDB_BITMAPRP2,IDB_BITMAPRP1);
		//不能录音
		m_flag1=false;
		//处于录音状态
		m_flag2=true;
		m_rp.RedrawWindow();
	}
}

//编写OnPop()函数,当用户单击IDC_POP按钮时,程序将弹出List控件,控件中显示播放的歌曲列表,
//选择其中的某一文件,单击Del按钮可以删除;双击某一文件可以播放该文件.
/*
void CMailServerDlg::OnPop()
{
	
	//允许展开List控件
	if(m_flag3)
	{   
		m_pop.LoadBitmaps(IDB_BITMAPC,IDB_BITMAPD);
		for(int i=503;i>=300;i--)
		{
			//List控件展开的速度
			Sleep(2);
			//List控件最终的位置
			MoveWindow(200,200,i+55,203);
		}
		//不允许展开List控件
		m_flag3=false;
	}
	else
	{   
		m_pop.LoadBitmaps(IDB_BITMAPA,IDB_BITMAPB);
		for(int i=300;i<=503;i++)
		{
			//List控件展开的速度
			Sleep(2);
			//List控件最终的位置
			MoveWindow(200,200,i+55,203);
		}
		m_flag3=true;
	}
}
*/

//编写OnDblclkList()函数,双击List中的某一文件名,可以在播放器中播放该音频文件

void CMailServerDlg::OnDblclkList()
{
	//获取当前文件在列表中的位置
	int i=m_list.GetCurSel();
	CString tp;
	tp.Format("%d",i);
	fr=i;
	aa=file[i];
	Onstop();
	//播放
	OnPlay();
	UpdateData(false);
}

//编写OnPer()函数,该消息函数用来选择播放当前音频文件所在位置的前一首歌曲

void CMailServerDlg::OnPer()
{
	//判断当前歌曲的位置,再往前走一个编号
	fr--;
	if(fr==-1)
	{
		fr=0;
	}
	if(fr>=0)
	{
		m_list.SetCurSel(fr);
		aa=file[fr];
		Onstop();
		OnPlay();
		UpdateData(false);
	}
}

//编写OnNext()函数,该消息函数用来选择播放当前音频文件所在位置的后一首歌曲

void CMailServerDlg::OnNext()
{
	//当前歌曲所在的位置往后走一个编号
	fr++;
	if(fr>fi)
	{
		fr=fi;
	}
	if(fr<=fi)
	{
		m_list.SetCurSel(fr);
		aa=file[fr];
		Onstop();
		OnPlay();
		UpdateData(false);
	}
}

//编写OnSdel()函数,该消息函数用来删除音频文件列表中所选中的音频文件

void CMailServerDlg::OnSdel()
{
	//获取当前选定文件的位置
	int temp=0,i=0,j=0;
	temp=m_list.GetCurSel();
	for(i;i<=fi;i++)
	{
		if(i==temp)
		{
			j=i;
			//在文件路径数组中,所选条目的所有音频文件向前移一位
			for(j;j<fi;j++)
			{
				file[j]=file1[j+1];
			}
			//设置最大文件数
			fi=fi-1;
			//在控件中,删除控件中选定条目的字符串
			m_list.DeleteString(temp);
			m_list.SetCurSel(temp-1);
			UpdateData(false);
			forfor1();
		}
	}
}

//编写forfor()函数,该函数将原路径数组转移到临时路径数组中

 void CMailServerDlg::forfor()
 {
	 int i=0;
	 for(i;i<=fi;i++)
	 {
		 file[i]=file[i];
	 }
 }

 //编写forfor1()函数,该函数将临时路径数组转移到原路径数组中

 void CMailServerDlg::forfor1()
 {
	 int i=0;
	 for(i;i<=fi;i++)
	 {
		 file[i]=file[i];
	 }
 }


//编写托盘图标函数Thide()

void CMailServerDlg::Thide()
{
	//创建任务栏图标对象
	NOTIFYICONDATA tnd;
	tnd.cbSize=sizeof(NOTIFYICONDATA);
	//将当前程序托盘
	tnd.hWnd=this->m_hWnd;
	tnd.uID=IDR_MAINFRAME;
	//定义托盘的属性:消息响应方式,图标,提示语言
	tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
	tnd.uCallbackMessage=WM_MYMESSAGE;
	//托盘图标的设置
	tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
	//托盘图标提示信息的编辑
	strcpy(tnd.szTip,"^_^温馨提示:Mp3 Player单击图标弹出窗口");
	//向任务栏添加图标
	Shell_NotifyIcon(NIM_ADD,&tnd);
}

void CMailServerDlg::OnLButtonDown(UINT nFlags,CPoint point)
{
	//向系统发送鼠标左键按下的信息
	PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
}

//编写系统消息响应函数WindowProc()

LRESULT CMailServerDlg::WindowProc(UINT message,WPARAM wParam,LPARAM lParam)
{
	switch(message)
	{
	case WM_MYMESSAGE:
		if(lParam==WM_RBUTTONUP||lParam==WM_LBUTTONUP)
		{
			ShowWindow(SW_SHOW);
			Tdehide();
		}
		break;
	}
	return CDialog::WindowProc(message,wParam,lParam);
}

//编写取消托盘图标函数Tdehide()

void CMailServerDlg::Tdehide()
{
	//创建托盘图标的对象
    NOTIFYICONDATA tnd;
	tnd.cbSize=sizeof(NOTIFYICONDATA);
	tnd.hWnd=this->m_hWnd;
	tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
	tnd.uCallbackMessage=WM_MYMESSAGE;
	//用户自定义的消息,即鼠标在任务栏上的程序图标上动作时图标发送的消息
	tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
	strcpy(tnd.szTip,"Mp3 Player单击图标弹出窗口");
	//取消托盘图标模式
	Shell_NotifyIcon(NIM_DELETE,&tnd);
}

//编写播放完整歌曲的函数Tplay()

void CMailServerDlg::Tplay()
{
	MCI_OPEN_PARMS mciopenparms;
	MCI_PLAY_PARMS mciplayparms;
	mciopenparms.lpstrElementName=aa;
	mciopenparms.lpstrDeviceType=NULL;
	//向多媒体设备发送打开设备的消息
	mciSendCommand(0,MCI_OPEN,MCI_DEVTYPE_WAVEFORM_AUDIO,(DWORD)(LPVOID)&mciopenparms);
	m_count=mciopenparms.wDeviceID;
	mciplayparms.dwCallback=(DWORD)GetSafeHwnd();
	cdlen=getinfo(MCI_STATUS_LENGTH);
	cdfrom=MCI_MAKE_HMS(0,0,0);
	cdto=MCI_MAKE_HMS(MCI_HMS_HOUR(cdlen),MCI_HMS_MINUTE(cdlen),MCI_HMS_SECOND(cdlen));
	mciplayparms.dwFrom=cdfrom;
	mciplayparms.dwTo=cdto;
	//向多媒体设备发送播放的消息
	mciSendCommand(m_count,MCI_PLAY,MCI_TO|MCI_FROM,(DWORD)(LPVOID)&mciplayparms);
	SetTimer(0,1000,NULL);
	m_sl.SetRange(0,cdlen);
}



// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMailServerDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}











⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -