71.mciSendCommand 函数可以向多媒体发送命令,相应设备接收到命令后就会实现相应的功能。
比如发送MCI_OPEN命令来打开设备,发送MCI_STATUS命令获取设备的状态,也就是检查
光驱中是否有CD及CD中曲目的数量,发送MCI_PLAY命令实现CD曲目的播放。
如下为示例代码:
::mciSendCommand (NULL,
MCI_OPEN,
MCI_WAIT | MCI_OPEN_SHAREABLE|
MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID ,
(DWORD)(LPVOID) &OpenParms);
注:使用此函数需要包含MMSystem.h头函数。
72.如何把一个应用程序的图标显示在系统托盘中。
要把一个应用程序的图标显示在系统托盘中可以调用Shell_NotifyIcon函数。
此函数的原型为:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(DWORD dwMessage,
PNOTIFYICONDATA pnid);
第一个参数可以为一下值:
NIM_ADD Adds an icon to the status area.
NIM_DELETE Deletes an icon from the status area.
NIM_MODIFY Modifies an icon in the status area.
第二个参数标志这与应用程序相关的信息。其类型为NOTIFYICONDATA的指针。
如下示例代码:
NOTIFYICONDATA data;
data.hWnd=m_hWnd;
data.uCallbackMessage=WM_ONTRAY;
data.uFlags=NIF_MESSAGE|NIF_ICON;
data.hIcon=m_hIcon;
data.uID=IDR_MAINFRAME;
Shell_NotifyIcon(NIM_ADD,&data);
73.如何实现声音录制与播放
要实现声音的录制与播放我们可以使用MCI函数。通过MCIWndCreate函数创建一个窗体句柄,
主要在该窗体中实现声音的录制;创建窗体句柄后通过MCIWndNew函数打开录音设备,
通过MCIWndCanRecord函数判断是否可以录音,如果可以则通过MCIWndRecord进行声音录制。
播放录音可以使用MCIWndPlay函数。
下面为示例代码:
在stdafx.h加入
#include<vfw.h>
#pragma comment(lib,"vfw32.lib")
定义HWND句柄
HWND mciwav;
录音
MCIWndClose(mciwav);
mciwav=MCIWndCreate(this->m_hWnd,::AfxGetApp()->m_hInstance,WS_CAPTION,NULL);
MCIWndNew(mciwav,"waveaudio");
if(MCIWndCanRecord(mciwav))
MCIWndRecord(mciwav);
停止
MCIWndStop(mciwav);
播放
if(MCIWndCanPlay(mciwav))
MCIWndPlay(mciwav);
74.如何播放WAV文件
播放WAV文件需要使用Winmm.lib库,该库包含了声音的录制,CD的播放何光驱的播放等许多
多媒体函数。
播放WAV文件的步骤:
首先定义MCIDEVICEID变量,用来设置设备ID号;定义MCI_OPEN_PARMS变量,用来设置打开
设备类型;定义MCI_PLAY_PARMS变量,设置播放回调函数。
然后使用mciSendCommand函数的MCI_OPEN命令打开播放WAV文件的设备,
获得mciOpenParms 变量的wDeviceID值,再通过MCI_OPEN_PARMS变量设置lpstrElementName
属性,该属性时WAV文件的路径,通过mciSendCommand函数将文件打开。最后使用
mciSendCommand函数的MCI_PLAY命令播放文件。
75.如何控制左右声道
我们可以通过waveOutGetVolume函数来获得系统的音量,通过waveOutSetVolume函数来设置
系统的音量。系统的音量是一个DWORD值,它的前两个字节表示左声道的音量,后两个字节表示
右声道的音量。系统当前音量何0x0000FFFF值做与运算可以得到系统左声道的音量;
系统当前音量何0xFFFF0000做与运算可以得到系统右声道的音量。
文件的基本操作
76.创建和删除文件夹
使用API函数CreateDirectory可以创建文件夹,使用GetCurrentDirectory函数可以在一个
缓冲区中装载当前目录。相关函数的说明请查阅MSDN。
如下为示例代码:
创建文件夹
char buf[256];
::GetCurrentDirectory(256,buf); //获取程序根目录路径
m_name.GetWindowText(name);
strcat(buf,"//");
strcat(buf,name);
if(CreateDirectory(buf,NULL))
{
MessageBox("文件夹创建成功!");
return;
}
删除文件夹
char buf[256];
::GetCurrentDirectory(256,buf);
m_name.GetWindowText(name);
strcat(buf,"//");
strcat(buf,name);
if(RemoveDirectory(buf))
{
MessageBox("文件夹删除成功!");
return;
}
77.如何将文件删除到回收站中
SHFileOperation是Windows提供的对文件系统对象进行删除、移动、复制等操作
的API函数。
函数原型如下:
WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT lpFileOp);
我们可以通过设置SHFILEOPSTRUCT结构体的对象来控制对文件的操作。
typedef struct _SHFILEOPSTRUCTA
{
HWND hwnd;
UINT wFunc;
LPCSTR pFrom;
LPCSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
LPCSTR lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS
} SHFILEOPSTRUCTA, FAR *LPSHFILEOPSTRUCTA;
如下为示例代码;
char fileName[100]="/0";
strcpy(fileName,strText);
strcat(fileName,"/0");
SHFILEOPSTRUCT shfile;
shfile.hwnd = 0;
shfile.wFunc = FO_DELETE;
shfile.pFrom = fileName;
shfile.pTo = NULL;
shfile.fFlags = FOF_ALLOWUNDO;
shfile.hNameMappings = NULL;
shfile.lpszProgressTitle =NULL ;
SHFileOperation(&shfile);
78.如何清除回收站?
我们可以通过SHEmptyRecycleBin函数来清空回收站。
函数原型如下:
SHSTDAPI SHEmptyRecycleBin(
HWND hwnd,
LPCTSTR pszRootPath,
DWORD dwFlags
);
相关参数说明请查阅MSDN。
79.对INI文件的操作
我们可以通过CreateFile函数创建一个INI文件,然后利用WrietProfileString函数
向INI文件写入数据。
80.如何删除文件目录
利用API函数RemoveDirectory可以实现删除文件夹的功能。
注:RemoveDirectory函数只能删除空文件夹,因此在调用前需要删除目录下的文件。
如下示例代码:
CString str;
m_path.GetWindowText(str);
DelFolder(str);//先删除目录下的文件
//目录为空时删除目录
if(RemoveDirectory(str))
{
MessageBox("删除成功!");
return;
}
void DelFolder(CString path)
{
CFileFind file;
if(path.Right(1) != "//")
path +="//*.*";
BOOL bf;
bf = file.FindFile(path);
while(bf)
{
bf = file.FindNextFile();
//是文件时直接删除
if (!file.IsDots() && !file.IsDirectory())
DeleteFile(file.GetFilePath());
else if (file.IsDots())
continue;
else if (file.IsDirectory())
{
path = file.GetFilePath();
//是目录时,继续递归调用函数删除该目录下的文件
DelFolder(path);
//目录为空后删除目录
RemoveDirectory(path);
}
}
}
分享到:
相关推荐
VC++常用数值算法集 一些常用的数学算法
VC++皮肤合集,本人从网上收集,用于windows窗体皮肤的更换
VC++串口通信经典源码合集
VC++ windows运行环境合集,用于生成C++运行程序Exe(mfc等)后,在新电脑上部署运行环境,带注册Dll,实际项目已使用,亲测可用.
VC++各版本合集,包括VC++2005,VC++2008,VC++2010,VC++2012,VC++2013,VC++2015,VC++2017
初学vc++和ASP的一些问题集。里面的问题可能对一些人有益处。还属初浅。
VC++常见问题集:其中包含了c++编程时可能遇到的问题及解决问题的方法,对初学C++编程的同学很有帮助,可以下载!
微软常用VC++运行库合集 v2018.06.30(32&64;位)最新版
VC++图像处理算法合集
VC++运行库合集
顺序存储结构的表、堆栈和队列,链式存储结构的表、堆栈和队列,数组、串和广义表,递归,树和二叉树,图,排序,查找,文件。含有108个完整的程序源代码、可执行文件。
这里包含了若干本VC++实例教程及实例,对VC++学习很有帮助,希望大家能够喜欢。由于文件太大,分为五个部分。part5
VC++运行库合集单文件安装包就一个exe文件,如果你的电脑缺少运行库可以用这个,默认会装基本所有运行库,离线运行不需要联网操作,亲测好用,能解决很多问题
VC++知识集:收录了若干程序员在进行VC++编程时遇到的实际问题,并给出了详细的讲解。希望对您有所帮助!
下载并安装微软VC++2015版运行库 (英文全称:Microsoft Visual C++ 2015 Redistributable Package)
VC++允许库合集,解决未能加载文件或程序集CefSharp.Core.dll问题
VC++串口通信串口软件程序18个经典源码合集: VC 串口通信程序.rar VC 读串口话是动态波形,非常好的应用程序,有源码.rar VC++ 串口实现双机互联 包含视窗加代码.rar VC++ 串口通信,可以收发数据,可选用TCPIP 通信....
编程语言,VC++6.0 工具主要为(OD1.1,CE5.4) 预计平均3天左右更新一课 大家好,我是郁金香老师:QQ150330575 欢迎大家参加梅州技术 VC++外挂编程VIP培训班。 在接下来的一段时间将由我和大家一起学习游戏外挂的分析...
VC++编程实用小例子锦集VC++编程实用小例子锦集VC++编程实用小例子锦集
vc++编程指南和VC常见问题集(中文.chm).rar