首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

MFC 相关有关问题

2014-01-19 
MFC 相关问题void CPTADlg::OnBnClickedOpenFilePath(){CFileDialog fileDlg(true)if (IDOK fileDlg.D

MFC 相关问题
void CPTADlg::OnBnClickedOpenFilePath()
{
    CFileDialog fileDlg(true);
    if (IDOK == fileDlg.DoModal())
    {
char *pch = NULL;
        CString path_str = fileDlg.GetPathName();
 m_InBscFilePath = path_str;
UpdateData(0);
    }
}
我想要在其中调用一个函数func(char *pFileName);把InBscFilePath字符串传进去,该怎么办?
我使用GetBuffer传到func函数的时候就只有字符串的第一个字母,这是怎么回事?
[解决办法]
m_InBscFilePath 怎么定义的?你的表达和代码对不上号
[解决办法]
unicode 编码问题。把CString转化为char *再传!
[解决办法]

引用:
void CPTADlg::OnBnClickedOpenFilePath()
{
    CFileDialog fileDlg(true);
    if (IDOK == fileDlg.DoModal())
    {
char *pch = NULL;
        CString path_str = fileDlg.GetPathName();
 m_InBscFilePath = path_str;
UpdateData(0);
    }
}
我想要在其中调用一个函数func(char *pFileName);把InBscFilePath字符串传进去,该怎么办?
我使用GetBuffer传到func函数的时候就只有字符串的第一个字母,这是怎么回事?

就一个字符,我感觉应该是unicode的字符串buffer,传入到char*函数中,
结果unicode多余的0,被多字节判断当成了结束符
[解决办法]
2楼和3楼说的正确
楼主帖子发错区了
建议楼主了解一下UNICODE编码是怎么回事,否则文件路径有汉字的时候更让你觉得神奇
[解决办法]
引用:
CString 如何转换成char *,我是这样写的也不行

char *FileName = (char *)m_InBscFilePath.GetBuffer();
func(FileName);

要转换的是数据,不是指针
建议楼主了解一下UNICODE编码是怎么回事
[解决办法]
CString csValue; // 你自己的值
wstring wsSwap = csValue.GetString(); 
wchar_t wszFinal = wsSwap.c_str();

[解决办法]
猛击这里看!

热点排行