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的方法是行不通的,我试过,帮我解决的人我会高分奖励的!
展开
 我来答
bbc032
2010-05-22 · TA获得超过112个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:164万
展开全部
多字节和UNICODE的问题。VS2005默认是UNICODE。在项目中,常规-》字符集 改为“使用多字节”。
或者:
char szFilter[] ="所有文件(*.*)||";
CFileDialog fd( TRUE, _T("*.*"), _T("*.*"),
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR|OFN_EXPLORER,
(LPCTSTR)szFilter );
百度网友a2c7f1d
2010-05-22 · TA获得超过276个赞
知道小有建树答主
回答量:291
采纳率:0%
帮助的人:256万
展开全部
楼上已经说了,从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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式