void CMy002Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
char filter[]="所有文件(*.*)|*.*||";
CFileDialog fdlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,filter);
fdlg.m_ofn.lpstrInitialDir="c:\\";
if(fdlg.DoModal()==IDOK)
{
GetDlgItem(IDC_EDIT1)->SetWindowText(fdlg.GetPathName());
}
}
编译之后有如下错误,不知道该如何进行转换,编辑框的id为IDC_EDIT1
5 IntelliSense: 未定义标识符 "IDC_EDIT1"
3 IntelliSense: 没有与参数列表匹配的构造函数 "CFileDialog::CFileDialog" 实例
4 IntelliSense: 不能将 "const char *" 类型的值分配到 "LPCWSTR" 类型的实体 f:\c++程序设计\vc++范例开发大全\002\002\002dlg.cpp

1.error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 5 从“char [20]”转换为“LPCTSTR” f:\c++程序设计\vc++范例开发大全\002\002\002dlg.cpp
2 error C2440: “=”: 无法从“const char [4]”转换为“LPCWSTR” f:\c++程序设计\vc++范例开发大全\002\002\002dlg.cpp 162 1 002那个大虾能告诉我该怎样进行转换啊?在vc++6.0可以,但是在vc++2010就不行了

解决方案 »

  1.   

    char filter[]="所有文件(*.*)|*.*||";
    改成
    CString filter = "所有文件(*.*)|*.*||";
    未定义标识符 "IDC_EDIT1"
    看看你的资源文件里时候有该控件
      

  2.   

    在界面没有添加IDC_EDIT1这个CEdit控件
      

  3.   

    1、你用vc2010的工程环境的字符集是unicode么?如果是的话应注意两者的区别
    CString str = _T("");应当这样使用
    2、你Domodal()后窗口已经销毁,真怀疑用GetDlgItem还能不能获取edit的内容,保险点还是edit关联CString变量吧
    3、如果是unicode环境的话,少用char,而是TCHAR
      

  4.   

    //char filter[]="所有文件(*.*)|*.*||";
    TCHAR filter[]=_T("所有文件(*.*)|*.*||");
    // unicode工程,很多函数参数都要用 wchar*, 而不是 char*
    // 为了兼容,可以用MBCS和unicode都可以用的TCHAR.h的中的宏
      

  5.   

    //我来说说第一个错误吧!
    1.error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 5 从“char [20]”转换为“LPCTSTR” f:\c++程序设计\vc++范例开发大全\002\002\002dlg.cpp//从错误提示来看,明显是楼主人第5个参数传错了,呵呵,出错信息中已经给出函数原型了:CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)在vc++2010下工程环境的字符集默认是unicode建议将这行:char filter[]="所有文件(*.*)|*.*||";
    改为:     TCHAR filter[]="所有文件(*.*)|*.*||";//其它的建议也用通用宏吧!...
      

  6.   

    所以字符串前加: _T("字符串")如果你确定有IDC_EDIT1这个控件的话,#include "resource.h"
      

  7.   

    一觉本来,发现我之前的代码还不够标准,呵呵,补充一下吧:建议将这行:char filter[]="所有文件(*.*)|*.*||";
    改为: TCHAR filter[]=_T("所有文件(*.*)|*.*||");