字符数组与cstring的转换问题 程序中定义了char buf[200],CString str.用str.format("%s",buf)方法将buf的值传给str.程序执行完该语句,str的值看不到。为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 buf有内容吗?没有就当然看不到了 BROWSEINFO brinfo; char buf[MAX_PATH],buf2[MAX_PATH]; brinfo.hwndOwner=m_hWnd; brinfo.pidlRoot = NULL; brinfo.pszDisplayName = buf; brinfo.lpszTitle = "文件夹/驱动器:"; brinfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT; brinfo.lpfn = NULL; brinfo.lParam = NULL; LPCITEMIDLIST pidl = SHBrowseForFolder(&brinfo); // do it if(pidl==NULL) { return; } SHGetPathFromIDList(pidl, buf2); /*成员变量赋值*/ m_strPathName.Format("%s",buf2); 你弹出Message看看,是真正的没有数据吗?如果真的没有,你设置的字符集是什么?Unicode 的吗?那可能要先转到WCHAR 我测试了下没问题啊。楼主再试试void CDemoDlg::OnButton2() { // TODO: Add your control notification handler code here char buf[20]="Hello VC++"; CString str; str.Format("%s",buf); MessageBox(str);} Message显示正确。我在主对话框设置一个选择路径按钮,上面的代码是点击按钮响应方法,上面代码的最后一行是UpdateData(false).第一次点击按钮主对话框内容不更新。之后点击该按钮内容是对的。为什么? char buf[200]=";ajdf;adjf;"; CString s; s.Format("%s",buf);MessageBox(s);难道有错吗? 检查一下SHGetPathFromIDList的返回值.这是我的代码: BROWSEINFO bi = {0}; char szDestFolder[MAX_PATH]; bi.hwndOwner = GetSafeHwnd(); bi.lpszTitle="请选择数据所在目录:"; bi.pszDisplayName=szDestFolder; bi.lpfn = NULL; bi.lParam = NULL; bi.ulFlags = (BIF_RETURNONLYFSDIRS | BIF_RETURNFSANCESTORS | BIF_USENEWUI | BIF_VALIDATE); LPITEMIDLIST pidlDest = SHBrowseForFolder(&bi); char szPath[MAX_PATH]; if(pidlDest!=NULL && SHGetPathFromIDList(pidlDest,szPath)) { //.... } BROWSEINFO brinfo; char buf[MAX_PATH],buf2[MAX_PATH]; brinfo.hwndOwner=m_hWnd; brinfo.pidlRoot = NULL; brinfo.pszDisplayName = buf; brinfo.lpszTitle = "文件夹/驱动器:"; brinfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT; brinfo.lpfn = NULL; brinfo.lParam = NULL; LPCITEMIDLIST pidl = SHBrowseForFolder(&brinfo); // do it if(pidl==NULL) { return; } SHGetPathFromIDList(pidl, buf2); /*成员变量赋值*/ m_strPathName.Format("%s",buf2); UpdateData(FALSE); 我在主对话框设置一个选择路径按钮,上面的代码是点击按钮响应方法中的代码,第一次点击选择路径按钮,主对话框内容不更新。之后点击该按钮内容是对的。为什么? 你设置一下Tools->Options->Debug->Display unicode strings MFC CToolBar创建 未知原因 等高手解答 如何更改VC中定义菜单的分隔线的颜色 关于TreeView控件的内部数据存储。。。 高手救命呀!一个有相当难度的问题 现在越来越不清楚了Debug和Release的区别了--------- 值的花500分的问题 请问?.gbc是什么格式的文件?怎么打开? 我想偷偷的进村。 有什么不一样? 各位,请教个问题:关于队列的进出。 为啥总是没人回答我问题,再问一个:toolbar上button下的text总是不显示 设置控件颜色!!
char buf[MAX_PATH],buf2[MAX_PATH];
brinfo.hwndOwner=m_hWnd;
brinfo.pidlRoot = NULL;
brinfo.pszDisplayName = buf;
brinfo.lpszTitle = "文件夹/驱动器:";
brinfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
brinfo.lpfn = NULL;
brinfo.lParam = NULL;
LPCITEMIDLIST pidl = SHBrowseForFolder(&brinfo); // do it
if(pidl==NULL)
{
return;
}
SHGetPathFromIDList(pidl, buf2);
/*成员变量赋值*/
m_strPathName.Format("%s",buf2);
如果真的没有,你设置的字符集是什么?Unicode 的吗?那可能要先转到WCHAR
void CDemoDlg::OnButton2()
{
// TODO: Add your control notification handler code here
char buf[20]="Hello VC++";
CString str;
str.Format("%s",buf);
MessageBox(str);
}
CString s;
s.Format("%s",buf);
MessageBox(s);难道有错吗?
BROWSEINFO bi = {0};
char szDestFolder[MAX_PATH];
bi.hwndOwner = GetSafeHwnd();
bi.lpszTitle="请选择数据所在目录:";
bi.pszDisplayName=szDestFolder;
bi.lpfn = NULL;
bi.lParam = NULL;
bi.ulFlags = (BIF_RETURNONLYFSDIRS | BIF_RETURNFSANCESTORS | BIF_USENEWUI | BIF_VALIDATE);
LPITEMIDLIST pidlDest = SHBrowseForFolder(&bi);
char szPath[MAX_PATH];
if(pidlDest!=NULL && SHGetPathFromIDList(pidlDest,szPath))
{
//....
}
char buf[MAX_PATH],buf2[MAX_PATH];
brinfo.hwndOwner=m_hWnd;
brinfo.pidlRoot = NULL;
brinfo.pszDisplayName = buf;
brinfo.lpszTitle = "文件夹/驱动器:";
brinfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
brinfo.lpfn = NULL;
brinfo.lParam = NULL;
LPCITEMIDLIST pidl = SHBrowseForFolder(&brinfo); // do it
if(pidl==NULL)
{
return;
}
SHGetPathFromIDList(pidl, buf2);
/*成员变量赋值*/
m_strPathName.Format("%s",buf2);
UpdateData(FALSE);
我在主对话框设置一个选择路径按钮,上面的代码是点击按钮响应方法中的代码,第一次点击选择路径按钮,主对话框内容不更新。之后点击该按钮内容是对的。为什么?
Tools->Options->Debug->Display unicode strings