我在VC6中的MFC程序正常,为什么在VS2008中的MFC中有错误
下面是错误CStringstr;char*str0;CFileDialogFileDlg(TRUE,"(*.txt)|*.txt","*.txt",OFN_HIDEREA...
下面是错误
CString str;
char* str0;
CFileDialog FileDlg( TRUE , "(*.txt)|*.txt","*.txt" ,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT ,"文本文件(*.txt)");
FileDlg.m_ofn.lpstrInitialDir="C:\\Documents and Settings\\googol\\桌面\\lineinterpolation\\Arc";
if(FileDlg.DoModal()==IDOK)
{
AfxMessageBox( FileDlg.GetPathName() );
str=FileDlg.GetPathName( );
}
str0= (LPSTR)(LPCTSTR)str;
m_cha=str0;
UpdateData(false);
程序 展开
CString str;
char* str0;
CFileDialog FileDlg( TRUE , "(*.txt)|*.txt","*.txt" ,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT ,"文本文件(*.txt)");
FileDlg.m_ofn.lpstrInitialDir="C:\\Documents and Settings\\googol\\桌面\\lineinterpolation\\Arc";
if(FileDlg.DoModal()==IDOK)
{
AfxMessageBox( FileDlg.GetPathName() );
str=FileDlg.GetPathName( );
}
str0= (LPSTR)(LPCTSTR)str;
m_cha=str0;
UpdateData(false);
程序 展开
1个回答
展开全部
这是由于不同的编译器对程序检查的严格程度不一样,比如说:
char a[20];
char *p = a;
在有些编译器里面编译通过,而在有些编译器里面需要这样赋值char*p = (char*)a;a是一个静态数组,并不是指针,赋值需要强制转换。
程序在vc6.0中移到vs2008中需要注意一个问题,vc6.0中字符一个字节表示,而在vs2008中字符可能一个字节、两个字节或多个字节表示,默认是两个字节表示,可以改成单字节表示。
char a[20];
char *p = a;
在有些编译器里面编译通过,而在有些编译器里面需要这样赋值char*p = (char*)a;a是一个静态数组,并不是指针,赋值需要强制转换。
程序在vc6.0中移到vs2008中需要注意一个问题,vc6.0中字符一个字节表示,而在vs2008中字符可能一个字节、两个字节或多个字节表示,默认是两个字节表示,可以改成单字节表示。
追问
追答
把程序发到我的邮箱,我下班回去改下,小问题应该很快。我的qq邮箱1275233008@qq.com
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询