先贴我的代码:
CFileDialog fileDlg(FALSE);
fileDlg.m_ofn.lpstrTitle=L"我的文件保存对话框";
fileDlg.m_ofn.lpstrFilter=L"Text Files(*.dat)\0*.dat\0All Files(*.*)\0*.*\0\0";
fileDlg.m_ofn.lpstrDefExt=L"dat";
if(IDOK==fileDlg.DoModal())
{
if (!isRecording)
{
record_fp = fopen(fileDlg.GetFileName().GetBuffer(0),"wb");//错误:error C2664: “fopen”: 不能将参数 1 从“wchar_t *”//转换为“const char *” 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
}请问各位高手,这个问题该如何解决呢?如果用CFile类可以搞定,可是整个程序就要改太多了。。多谢了
CFileDialog fileDlg(FALSE);
fileDlg.m_ofn.lpstrTitle=L"我的文件保存对话框";
fileDlg.m_ofn.lpstrFilter=L"Text Files(*.dat)\0*.dat\0All Files(*.*)\0*.*\0\0";
fileDlg.m_ofn.lpstrDefExt=L"dat";
if(IDOK==fileDlg.DoModal())
{
if (!isRecording)
{
record_fp = fopen(fileDlg.GetFileName().GetBuffer(0),"wb");//错误:error C2664: “fopen”: 不能将参数 1 从“wchar_t *”//转换为“const char *” 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
}请问各位高手,这个问题该如何解决呢?如果用CFile类可以搞定,可是整个程序就要改太多了。。多谢了
{
FILE* dest;
FILE* frrom;
char ch;
if((dest=fopen(mudi,"wb"))==NULL)
{
return -1;
}
if((frrom=fopen(from,"rb"))==NULL)
{
return -1;
}
ch=fgetc(frrom);
while(!feof(frrom))
{
fputc(ch,dest);
ch=fgetc(frrom);
}
fclose(frrom);
fclose(dest);
return 1;
}我没开vc6这是原来写过的fopen代码。
p=fileDlg.GetFileName().GetBuffer(0);
请问是这个意思吗?
char* p = new char[128];
wcstombs(p,fileDlg.GetFileName(),127); record_fp = fopen(p,"wb");
多谢各位。
record_fp = _wfopen(fileDlg.GetFileName().GetBuffer(0),L"wb");
试试_tfopen吧,不论unicode或者mbcs工程。
fopen本身就提供了unicode版本(_wfopen)和mbcs版本(fopen),和两个版本下都可用的宏(_tfopen)