void CDSAdpcmPlayerView::AdpcmPlay(char *flnm)//ADPCM自适应差分脉冲编码调制
{
int rtn;
char srcflnm[1024];
char dstflnm[1024];
char *pc;
char *ps;
char dataflnm[1024];
char lastflnm[1024];
GetModuleFileName(NULL, dataflnm, sizeof(dataflnm));
pc = dataflnm + strlen(dataflnm);
while (*pc != '\\') pc--;
sprintf(pc, "\\DSAdpcmPlayer.dat");
GetPrivateProfileString("System", "LastFile", NULL, lastflnm, sizeof(lastflnm), dataflnm);
if (strcmp(lastflnm, "") != 0)
{
DeleteFile(lastflnm);
}
sprintf(srcflnm, "%s", flnm);
ps = srcflnm + strlen(srcflnm);
while (*ps != '\\') ps--;
GetModuleFileName(NULL, dstflnm, sizeof(dstflnm));
pc = dstflnm + strlen(dstflnm);
while (*pc != '\\') pc--;
sprintf(pc, "%s", ps);
pc = dstflnm + strlen(dstflnm);
while (*pc != '.') pc--;
sprintf(pc, ".wav");
rtn = DSAdpcmFileToPcmFile(srcflnm, dstflnm);
if (rtn != DS_RTN_OK)
{
AfxMessageBox("文件格式转换错误!");
return;
}
WritePrivateProfileString("System", "LastFile", dstflnm, dataflnm);
ShellExecute(NULL, "open", dstflnm, NULL, NULL, SW_MAXIMIZE);// 运行并控制一个外部程序 执行成功会返回应用程序句柄
::PostMessage(hwnd, WM_CLOSE, 0, 0);// 用于将一条消息放入到消息队列中 如果函数调用成功,返回非零
}
希望能帮我解释一下 我看着里面的程序和之前的程序还有点相似之处?有点困惑,O(∩_∩)O谢谢!
这个函数是完成编码转换的吗,那上面的那个函数也不是完成格式转换的吗,这个函数中DSAdpcmPlayer.dat 完成一个INI配置信息文件 这个有什么作用呢怎么越来越觉得糊涂啊
追答这个函数,是通过参数获取文件名,转换后退出。理论上,应该是命令行处理函数,不明白?
追问之前的void CDSAdpcmPlayerView::OnFile()这个函数也是进行原文件和目标文件转换的啊 突然下面的这个函数又是实现获取文件名 顺序不是都颠倒了吗 真的不怎么明白啊
追答两个没关系,入口不同。
OnFile是通过菜单打开。这个是通过命令行或参数。
这个是通过命令行或参数 这个函数必须要吗
追答不是必须的。
关键是看都有哪里调用它,如果只有命令行调用,那么如果你不需要命令行支持,可以忽略它。
命令行调用是怎么操作的,或是什么意思啊!
追答命令行参数,这个没法这里描述,百度搜这个词儿吧,好多解释。
来自:求助得到的回答