程序中定义了char buf[200],CString str.用str.format("%s",buf)方法将buf的值传给str.程序执行完该语句,str的值看不到。为什么?

解决方案 »

  1.   

    buf有内容吗?没有就当然看不到了
      

  2.   

    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);
      

  3.   

    你弹出Message看看,是真正的没有数据吗?
    如果真的没有,你设置的字符集是什么?Unicode 的吗?那可能要先转到WCHAR
      

  4.   

    我测试了下没问题啊。楼主再试试
    void CDemoDlg::OnButton2() 
    {
    // TODO: Add your control notification handler code here
    char buf[20]="Hello VC++";
    CString str;
    str.Format("%s",buf);
    MessageBox(str);
    }
      

  5.   

    Message显示正确。我在主对话框设置一个选择路径按钮,上面的代码是点击按钮响应方法,上面代码的最后一行是UpdateData(false).第一次点击按钮主对话框内容不更新。之后点击该按钮内容是对的。为什么?
      

  6.   

    char buf[200]=";ajdf;adjf;";
    CString s;
    s.Format("%s",buf);
    MessageBox(s);难道有错吗?
      

  7.   

    检查一下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))
    {
                //....
    }
      

  8.   

    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);
    我在主对话框设置一个选择路径按钮,上面的代码是点击按钮响应方法中的代码,第一次点击选择路径按钮,主对话框内容不更新。之后点击该按钮内容是对的。为什么?
      

  9.   

    你设置一下
    Tools->Options->Debug->Display unicode strings