`
jgsj
  • 浏览: 1051571 次
文章分类
社区版块
存档分类
最新评论

VC++问题集8

 
阅读更多

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++ windows运行环境合集(VC++2005-VC++2022)

    总的来说,VC++ Windows运行环境合集是解决程序运行依赖问题的有效工具,它使得开发者可以轻松地在各种Windows系统上部署和运行他们的C++程序,尤其是那些基于MFC框架的应用。正确地管理和使用这些运行库,能够保证...

    VC++允许库合集,解决未能加载文件或程序集CefSharp.Core.dll问题

    总之,"VC++允许库合集"是解决C++应用程序依赖问题的关键,而“未能加载文件或程序集CefSharp.Core.dll”通常是由于缺少运行库支持或配置不当所致。通过正确安装和配置VC++运行库,以及检查CefSharp的部署情况,通常...

    计算机问题集vc++ASP

    计算机问题集VC++ ASP是一个资源包,包含了初学者在学习VC++和ASP编程时可能会遇到的问题及解答。这个集合对于那些刚开始接触这两种技术的人来说是非常有价值的,因为它提供了实践中的常见问题和解决方案,帮助他们...

    VC++各版本合集2005-2017

    此外,此版本引入了新的诊断工具,帮助开发者检测并修复性能问题。 **VC++2013**加强了C++14标准的支持,比如通用初始化语法、可变模板参数列表等。同时,它在调试和性能分析方面有所提升,提供更好的用户体验。 *...

    VC++常用数值算法集

    在编程领域,尤其是在科学计算和工程应用中,...综上所述,"VC++常用数值算法集"涵盖的内容丰富多样,是解决各种数学问题和工程计算的强大工具箱。通过理解和掌握这些算法,开发者能够编写出高效且精确的数值计算程序。

    VC++串口通信经典VC++源码合集

    VC++中的ReadFile和WriteFile函数分别用于接收和发送数据,这两个函数都是异步的,因此在实际应用中可能需要配合GetOverlappedResult或WaitForSingleObject等函数处理同步问题。 在这些源码中,还涉及到数据转换...

    VC++皮肤(合集)

    同时,考虑到性能和兼容性问题,开发者需要进行充分的测试,确保皮肤在不同操作系统和硬件配置下都能正常工作。 总的来说,"VC++皮肤(合集)"为开发者提供了一个丰富的资源库,他们可以通过学习和实践,让自己的...

    vc++技巧集

    8. **多线程编程**:VC++支持多线程开发,书中会讲解如何创建和管理线程,以及同步和互斥量等多线程编程概念。 9. **文件操作**:C++提供了丰富的文件I/O功能,书中可能会介绍如何打开、读写文件,以及如何处理二...

    VC++常见问题集—C++学习

    "VC++常见问题集—C++学习"这个资源正好为此目的而设计,它提供了一个关于C++编程的常见问题合集,帮助开发者解决实际编程过程中可能遇到的困扰。 首先,让我们探讨一些C++编程中常见的问题: 1. **编译错误**:...

    (VC++2015 合集

    总的来说,VC++2015 Redistributable Package是确保基于VC++2015编译的应用程序正常运行的基础,它提供了必要的运行时环境和库文件,解决了程序依赖问题,并且随着微软的安全更新,确保了系统的安全性。无论是用户...

    VC++运行库合集

    VC++运行库合集

    微软常用VC++运行库合集 v2018.06.30(32&64;位)最新版

    **微软常用VC++运行库合集详解** 微软的VC++运行库是开发人员在使用Microsoft Visual Studio编写基于C++的应用程序时所依赖的关键组件。这些运行库包含了Microsoft C++编译器生成的动态链接库(DLLs),它们提供了...

    VC++笔记-问题集

    **VC++笔记-问题集** 本笔记集合涵盖了VC++编程中的关键知识点,特别是关于多线程操作、进程通信以及自定义ActiveX控件制作的深入探讨。这些主题在实际开发中具有广泛的应用,理解并掌握它们对于提升软件工程能力至...

    算法VC++程序集5

    顺序存储结构的表、堆栈和队列,链式存储结构的表、堆栈和队列,数组、串和广义表,递归,树和二叉树,图,排序,查找,文件。含有108个完整的程序源代码、可执行文件。

    vc++编程指南和VC常见问题集(中文.chm).rar

    《VC++编程指南和VC常见问题集》是一个针对微软Visual C++(简称VC++)开发者的参考资料集合。这个压缩包包含两个.chm文件,分别是"vc++ 编程指南.chm"和"VC常见问题集(中文).chm",它们提供了关于VC++编程的全面...

    VC++教学实践实例合集

    这里包含了若干本VC++实例教程及实例,对VC++学习很有帮助,希望大家能够喜欢。由于文件太大,分为五个部分。part5

    VC++深入详解(完整版)+所有源代码集

    8. **源代码实践**:书中提供的源代码集是理论知识的最佳实践,读者可以通过运行和修改代码来加深对各种概念和技术的理解,从而提高编程技能。 总结来说,《VC++深入详解(完整版)+所有源代码集》是一份全面的学习...

    归纳整理的VC++串口通信20个经典源码合集.zip

    VC++串口通信20个经典源码合集: .\VC 串口通信程序.rar .\VC 读串口话是动态波形,非常好的应用程序,有源码.rar .\VC++ 串口实现双机互联 包含视窗加代码.rar .\VC++ 串口通信,可以收发数据,可选用TCPIP 通信.rar ....

    微软VC++运行库合集.zip

    在Windows 10系统上,由于系统更新和安全性的提升,某些旧版本的VC++运行库可能不再被默认包含,因此安装这个合集可以帮助解决运行依赖于这些库的软件的问题。例如,一些游戏、软件或者系统工具可能需要VC++ 2005、...

    VC++运行库集合 6.0-2017

    随着时间的推移,微软不断更新和改进VC++运行库,引入了新的功能、优化了性能,并修复了已知的安全问题。例如,从VC++ 2005开始引入了.NET Framework的组件,使得C++开发者能够利用.NET平台的优势。在后续版本中,如...

Global site tag (gtag.js) - Google Analytics