PlaySound与CFileDialog

本文深入探讨了音视频处理、AI音视频处理、图像处理AR特效等领域的核心技术,包括算法原理、应用实例和实际操作技巧。通过详细解析各种技术细节,帮助读者掌握关键技能,提升音视频处理和AI应用能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:PlaySound

BOOL PlaySound(LPCSTR pszSound, HMODULE hwnd,DWORD fdwSound);

需要使用:
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")

二:CFileDialog

要使用CFileDialog,先用CFileDialog构造函数构造一个对象,当创建了一个对话框后,可以设置或修改m_ofn结构中的任何值,以初始化对话框控件的值或状态。m_ofn结构是OPENFILENAME类型的。要了解更多信息,可参阅联机文档“Win32 SDK”中的OPENFILENAME结构。
初始化对话框控件后,调用DoModal成员函数显示对话框并使用户输入路径和文件。DoModal返回不论是用户选择了OK(IDOK)还是取消(IDCANCEL)按钮。
当DoModal返回IDOK,可以使用某一个CFileDIalog的公共成员函数获取用户输入的信息。
CFileDIalog包含许多保护成员,使你可以处理常用的共享冲突、文件名合法性检查、列表框改变通知。这些保护成员对许多应用来说用处不大,因为缺省处理是自动的。对这些函数来说,消息映射入口是不必要的,因为它们是标准虚函数。
可以使用Windows CommDlgExtendError函数判断在初始化对话框时是否是发生了错误,并获取关于错误的更多信息。
析构一个CFileDialog对象是自动,无须调用CDialog::EndDialog。
使用户选用多个文件,可在调用DoModal之前设置OFN_ALLOWMULTISELECT标志。你应提供文件名缓冲区来放置返回的多个文件名的列表,这通过用一个分配了的缓冲区指针替换m_ofn.lpstrFile来实现,要在创建了CFileDialog之后调用DoModal之前进行此操作。另外,必须用m_ofn.lpstrFile指向的缓冲区字节数来设置m_ofn.nMaxFile。


CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。 
lpszDefExt指定默认的文件扩展名。 
lpszFileName指定默认的文件名。 
dwFlags指明一些特定风格。 
lpszFilter是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如: 
"Chart Files(*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。 
pParentWnd 为父窗口指针。

测试源码:在对话框添加按钮IDB_PLAY,为按钮添加单击事件响应函数OnBnClickedPlay。

void CaaDlg::OnBnClickedPlay()
{
	TCHAR szFilter[] = _T("Wave Files (*.wav)|*.wav|All Files (*.*)|*.*||");  
	CFileDialog dlg(TRUE,NULL,NULL,OFN_READONLY,szFilter,NULL);
	if(dlg.DoModal() == IDOK)
	{
		 CString fileName=dlg.GetPathName();
		 TRACE("\n\n\n\n");
		 TRACE(dlg.GetPathName());
		 TRACE("\n");
		 TRACE(dlg.GetFileName());
		 TRACE("\n");
		 TRACE(dlg.GetFileTitle());
		 TRACE("\n");
		 TRACE(dlg.GetFileExt());
		 TRACE("\n\n\n\n");
		 ::PlaySound(fileName,NULL,SND_FILENAME|SND_ASYNC);
	} 
}
测试GetPathName、GetFileName、GetFileTitle、GetFileExt函数,测试结果:

C:\Desktop\HelloWin.wav
HelloWin.wav
HelloWin
wav

播放音乐


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值