如下图) 哪里有错呢?

目的:一个音乐播放器,通过点击IDC_BUTTONOPEN按钮打开文件并播放文件,通过IDC_BUTTONPAUSE按钮暂停播放,使用mcisengstring函数;

问题:当我点击播放按钮并选择Mp3文件,可以正常播放并显示其完整路径;但是我在点击暂停按钮希望暂停播放并显示完整路径时,显示内容就对了(如下图);

哪里有错呢?
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
TCHAR long_path[MAX_PATH],short_path[MAX_PATH],cmd[MAX_PATH+15],songname[FILE_NAME];

//打开文件
case IDC_BUTTONOPEN:
{
//初始化打开Dlg
OPENFILENAME ofn;
TCHAR szFile[MAX_PATH];
//char szFile[MAX_PATH];定义一个长度为MAX_PATH的char数组。
//MAX_PATH是系统定义的一个宏,260。Windows操作系统文件路径的 最大长度。
ZeroMemory(&ofn,sizeof(ofn));
//memset 使用前将其成员(内存)清零是个好习惯

ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = TEXT('\0');
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = TEXT("ALL\0*.*\0mp3\0*.mp3\0wma\0*.wma\0");
ofn.nFilterIndex = 2; //默认使用mp3作为过滤器
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.hwndOwner = hwnd;//
ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

if (GetOpenFileName(&ofn)) 
//getopenfilename()返回值是BOOL类型,点确定返回TRUE;点取消返回FALSE;
{

GetShortPathName(szFile,short_path,sizeof(short_path));
wsprintf(cmd,"play %s",short_path);
mciSendString(cmd,"",0,NULL);

//显示当前播放歌曲名字(不含绝对路径)
GetFileTitle(szFile,songname,FILE_NAME);
SetDlgItemText(hwnd,IDC_EDITMUSICNAME,songname);

//*
MessageBox(hwnd,szFile,TEXT("目录1"),MB_OK);//显示选取文件 的完整路径;

//*/

}
break;

//暂停
case IDC_BUTTONPAUSE:
{
//szfile内容不对

GetDlgItemText(hwnd,IDC_EDITMUSICNAME,songname,sizeof(songname));
// wsprintf(cmd,"pause %s",long_path);
MessageBox(hwnd,long_path,TEXT("目录2"),MB_OK);
// mciSendString(cmd,0,0,NULL);

}
break;

default:
break;
}
}









拉莫斯之舞
浏览 102回答 1
1回答

暮色呼如

对于这个问题,我在我的软件中采用求ASC码值的方法,将每一位的ASC码值加起来,再case of,(因为我们事先知道具体的字符串,要不然,您怎么比较呢?)我做的例子的unit1窗体如下:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Edit1: TEdit;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);vars:string;i,j,k:integer;begins := Edit1.Text;j := length(s);i :=0;for k :=1 to j doi := i ord(s[k]);case i of97:messagebox(0,'50','50',mb_ok);{假设为a 97}98:messagebox(0,'51','51',mb_ok);{假设为b 97}{常数N:语句N...}else caption:=inttostr(i);end;end;end.-----------------------------------------------unit1窗体中,就一个组件,ord()函数是求字符的原始值 ord(s[k]),就是ASC码 
打开App,查看更多内容
随时随地看视频慕课网APP