[终稿]WinCC中如何播放声音文件
WinCC中如何播放声音文件(上)——获得项目路径:
文章标签: wincc
项目函数GetProjectPath
?将一个字符串变量传送给项目函数,已确定的项目路径将写入到该变量中。函数的调用者务必确保 为该字符串变量保留了足够的存储空间。如果已成功地执
行了函数,则可看到其返回值。
?定义并初始化一个数据类型为BOOL的bRet变量。
?下一步,定义了一个szProjectFile的字符串变量,用于接收项目名称。此外,
将字符串变量定义为 char*类型,并使用NULL对其进行初始化。
?接下来,定义一个CMN_ERROR数据类型的变量。
?通过API函数DMGetRuntimeProject()可确定项目的名称。
?下一步,strrchr()函数将对已确定的项目文件名称中处于“\”字符的最后位置进行搜索。在所发 现的字符后面的一个位置上,插入一个0。仅将保留项目
文件的路径,而不保留项目文件名称自身。
?所确定的项目路径将通过strcpy()函数复制给所传送的字符串变量。
BOOL GetProjectPath(char* lpstrProjectPath)
{
BOOL bRet = FALSE;
char szProjectFile[_MAX_PATH+1];
char* psz = NULL;
CMN_ERROR Error;
bRet = DMGetRuntimeProject(szProjectFile,_MAX_PATH+1,&Error);
if (bRet == FALSE)
{
return FALSE;
}
psz = strrchr (szProjectFile,'\\');
if (psz == NULL)
{
return FALSE;
}
*(psz+1) = 0;
strcpy(lpstrProjectPath,szProjectFile);
return TRUE;
}
WinCC中如何播放声音文件(下)——播放声音文件:
文章标签: wincc
项目函数CC_PlaySound
?在第一部分中,集成apdefap.h文件。通过该文件,当前项目函数也可以调 用
其它项目函数。
?函数标
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
定义了一个字符串变量,作为传送参数。使用该变量,可传送要播 放
的声音文件的名称。
?在第二部分中,集成Windows DLL winmm。由于只需要 DLL 的一个函 数,因
此直接声明该函数。此外,还定义两个符号常量。
?该项目函数假定项目文件夹中存在一个声音子文件夹。在该文件夹中,存储 项目中使用的声音文件。所期望声音文件的路径包括项目路径,声音文件夹 的名
称以及所传送的声音文件的名称。它将存储在变量szSoundPath中。
?通过Windows函数PlaySound()即可播放该声音。如果不能播放声音文 件,则通过Windows函数MessageBeep()产生简短的蜂鸣声来代替声音文 件。
#include "apdefap.h"
void CC_PlaySound(char* lpszSoundFile)
{
#pragma code("winmm.dll")
BOOL PlaySound( LPCTSTR lpszSound,HMODULE hModule,DWORD dwSound);
#define SND_FILENAME 0x00020000L
#define SND_ASYNC 0x0001
#pragma code()
BOOL bRet = FALSE;
char szProjectPath[_MAX_PATH];
char szSoundPath[_MAX_PATH];
GetProjectPath(szProjectPath); //Return-Type: BOOL
sprintf( szSoundPath,"%sSound\\%s",szProjectPath,lpszSoundFile);
bRet = PlaySound( szSoundPath,NULL,SND_FILENAME|SND_ASYNC);
if (bRet == FALSE)
{
MessageBeep((WORD)-1);
}
}