为了账号安全,请及时绑定邮箱和手机立即绑定

如下图) 哪里有错呢?

如下图) 哪里有错呢?

C
拉莫斯之舞 2022-12-16 17:13:14
目的:一个音乐播放器,通过点击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:{//初始化打开DlgOPENFILENAME 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;}}
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

对于这个问题,我在我的软件中采用求ASC码值的方法,将每一位的ASC码值加起来,再case of,(因为我们事先知道具体的字符串,要不然,您怎么比较呢?)
我做的例子的unit1窗体如下:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i,j,k:integer;
begin
s := Edit1.Text;
j := length(s);
i :=0;
for k :=1 to j do
i := i ord(s[k]);

case i of
97: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码


 


查看完整回答
反对 回复 2022-12-18
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信