
MFC程序在vs2008中报错,而在VC++6.0中没有报错,这是怎么回事?(高分给对能解答对的人)
charszFilter[]="所有文件(*.*)||";CFileDialogfd(TRUE,"*.*","*.*",OFN_HIDEREADONLY|OFN_OVER...
char szFilter[] = "所有文件(*.*)||";
CFileDialog fd( TRUE, "*.*", "*.*",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR|OFN_EXPLORER,
szFilter );
就是这段程序,我设计是用来打开一个对话框来选择所需要的文件的,这里默认显示的是所有文件供用户选择,开始在VC6.0中编译时没有错误的,后来在VS2008中编译报错如下:
error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 5 从“char []”转换为“LPCTSTR”
请问这个错误怎么解决,加_T的方法是行不通的,我试过,帮我解决的人我会高分奖励的! 展开
CFileDialog fd( TRUE, "*.*", "*.*",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR|OFN_EXPLORER,
szFilter );
就是这段程序,我设计是用来打开一个对话框来选择所需要的文件的,这里默认显示的是所有文件供用户选择,开始在VC6.0中编译时没有错误的,后来在VS2008中编译报错如下:
error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 5 从“char []”转换为“LPCTSTR”
请问这个错误怎么解决,加_T的方法是行不通的,我试过,帮我解决的人我会高分奖励的! 展开
2个回答
展开全部
多字节和UNICODE的问题。VS2005默认是UNICODE。在项目中,常规-》字符集 改为“使用多字节”。
或者:
char szFilter[] ="所有文件(*.*)||";
CFileDialog fd( TRUE, _T("*.*"), _T("*.*"),
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR|OFN_EXPLORER,
(LPCTSTR)szFilter );
或者:
char szFilter[] ="所有文件(*.*)||";
CFileDialog fd( TRUE, _T("*.*"), _T("*.*"),
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR|OFN_EXPLORER,
(LPCTSTR)szFilter );
展开全部
楼上已经说了,从vs2005开始就使用unicode编码了,所以写代码的时候尽量用TCHAR代替原来的char吧。str***都换成_tcs***,总之使用TCHAR.h里面的函数就没有问题。
TCHAR szFilter[] = _T("所有文件(*.*)||");
CFileDialog fd( TRUE, _T("*.*"), _T("*.*"), OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR|OFN_EXPLORER, szFilter);
TCHAR szFilter[] = _T("所有文件(*.*)||");
CFileDialog fd( TRUE, _T("*.*"), _T("*.*"), OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR|OFN_EXPLORER, szFilter);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询