播放器的声音调节
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
TCHAR szPath[MAX_PATH];
switch(id)
{
case IDC_PLAY:
{
OPENFILENAME ofn;
char szFile[MAX_PATH];
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = TEXT('\0');
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = TEXT("ALL\0*.*\0MP3\0*.mp3\0");
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.hwndOwner = hwnd;//自学能力、探索能力、猜测能力
ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn))
{
TCHAR shortPath[MAX_PATH];
GetShortPathName(szFile,shortPath,sizeof(shortPath));
TCHAR PL[MAX_PATH+10];
wsprintf(PL,"play %s",shortPath);
mciSendString(PL,"",0,NULL);
wsprintf(szPath,"%s",shortPath);
}
}
break;
case IDC_PAUSE:
{
TCHAR shortPath[MAX_PATH];
GetShortPathName(szPath,szPath,sizeof(szPath));
TCHAR PS[MAX_PATH+10];
wsprintf(PS,"pause %s",szPath);
mciSendString(PS,"",0,NULL);
}
break;
case IDC_ADDVOICE:
{
TCHAR cmd[256]; // 用来储存格式化后的指令
TCHAR volume[256]; // 用来储存从音乐中拿来的音量大小数据
int nVolume; // 把得到的文本型音量数据转换成整形,方便作加减处理
wsprintf(cmd,"status %s volume",szPath); // szPath为音乐的路径,之前先把它存在全局变量中
mciSendString(cmd,volume,sizeof(volume),0); // 把当前的音量状态存在volume字符串中
nVolume = atoi(volume); // 字符串转化成整型
wsprintf(cmd,"setaudio %s volume to %i",szPath,nVolume + 50); //如果想增加音量,把 - 变成 + 就可以了,另外步长也可以改
mciSendString(cmd,"",0,NULL); // 把结果安装回去
}
break;
case IDC_DECVOICE:
{
TCHAR cmd[256]; // 用来储存格式化后的指令
TCHAR volume[256]; // 用来储存从音乐中拿来的音量大小数据
int nVolume; // 把得到的文本型音量数据转换成整形,方便作加减处理
wsprintf(cmd,"status %s volume",szPath); // szPath为音乐的路径,之前先把它存在全局变量中
mciSendString(cmd,volume,sizeof(volume),0); // 把当前的音量状态存在volume字符串中
nVolume = atoi(volume); // 字符串转化成整型
wsprintf(cmd,"setaudio %s volume to %i",szPath,nVolume - 50); //如果想增加音量,把 - 变成 + 就可以了,另外步长也可以改
mciSendString(cmd,"",0,NULL); // 把结果安装回去
}
break;
default:
break;
以上是我播放器的主要代码,打开文件的地址传不到后边来,求高手指点。
[解决办法]
单步调一下,看看是否GetOpenFileName(&ofn)返回真