Moblie PPC下音效播放和手机振动的实现 
1、  音效播放: 
1、Win CE平台下内部API直接支持.WAV文件的播放 此函数如下: 
BOOL sndPlaySound(LPCTSTR lpszSoundName,UINT fuSound); 第一个参数是要播放的WAV文件路径 
第二个参数是播放模式 支持同步,异步播放和循环播放 ,不支持暂停播放 
具体介绍参考MSDN; 
结束播放直接调用   sndPlaySound(NULL,NULL)。 
头文件: #include “Mmsystem.h.” 
连接库文件:#pragma comment( lib, "Coredll.lib" ) 。 
备注:经测试在mobile PPC下 此API可以播放4M左右大小的文件完全可以胜任各种音效和背景音乐的实现, 
如果媒体文件不是.wav可以找相关工具进行格式转换。.mp3文件的播放在mobile下不能直接支持需 
要解码后播放,这个是比较复杂,我抽时间研究明白再说。 
2、手机震动实现: 
PPC和SmartPhone对此功能的支持方式是不一样的。 
在SmartPhone下使用API: Vibrate 和 VibrateStop (函数介绍参考MSDN) 
例如: 
Vibrate(0, NULL, TRUE, INFINITE); 
::Sleep(2000); 
VibrateStop(); 
头文件: #include “vibrate.h“ 
连接库文件:#pragma comment( lib, " aygshell.lib" ) 。 
在PPC下使用API:NLedGetDeviceInfo 和 NLedSetDevice (函数介绍参考MSDN) 
例如:(此代码在VS2005下通过功能测试并在项目中得到应用,直接复制以下代码并包含相关头文件即可运行) 
NLED_COUNT_INFO nci; 
    NLedGetDeviceInfo(NLED_COUNT_INFO_ID,(PVOID)&nci); 
    if(nci.cLeds > 1)        //如果系统中LED个数大于1 
    { 
       NLED_SETTINGS_INFO nsi; 
       nsi.LedNum = 1;      //LED号,第一个为0,一般情况下震动设备为1. 
       nsi.OffOnBlink = 1; //设置LED状态为开 
       (void)NLedSetDevice(NLED_SETTINGS_INFO_ID, &nsi); 
       Sleep(1000); 
       nsi.LedNum = 1; 
       nsi.OffOnBlink = 0; //设置LED状态为关 
       (void)NLedSetDevice(NLED_SETTINGS_INFO_ID, &nsi); 
    } 
头文件:#include “Nled.h” , #include “Pwinuser.h” 
备注: 
一般PPC系统会把震动设备做成LED,程序通过设置LED的状态来启动震动设备。 
当打开震动设备后应当做延迟处理后关闭设备,否则会一直震动的。