程序是基于对话框的,用一个“浏览”按钮选择文件的地址,用一个编辑框接收显示,然后对文件进行操作。代码如下:
void CMyDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
BROWSEINFO bi;
char Buffer[MAX_PATH + 1100];
bi.hwndOwner = NULL;
bi.pidlRoot =NULL;
bi.pszDisplayName = Buffer;
bi.lpszTitle = "请选择文件"; 
bi.lpfn = NULL;
bi.iImage=IDR_MAINFRAME; 
LPITEMIDLIST pIDList= SHBrowseForFolder(&bi);
if(pIDList) 
{
SHGetPathFromIDList(pIDList, Buffer); 
m_filepath1 = Buffer;
SetDlgItemText(IDC_EDIT1,m_filepath1); 
}
}
在debug时可以正常选择文件,在release下不行,有时只能选择文件夹,还有时只有桌面上的文件可供选择。想不明白啊,哪位高手帮我看看,问题出在哪里?小弟拜谢了!!

解决方案 »

  1.   

    既然debug下能正常运行,release下应该不会有问题,因为release只是除掉了调试信息,你rebuilt
    后再试试。
      

  2.   

    char Buffer[MAX_PATH + 1100];
    这个缓冲没必要开这么大吧
    这里有一个基于路径对话框的例子
    或许你可以参考一下
    http://blog.csdn.net/xianglitian/article/details/6753472
      

  3.   

    Buffer的长度应该为MAX_PATH
    bi.ulFlags没有被设置。调试时会被初始化为0xcccccccc,发布时会是未定义值。
    bi.iImage是系统图像列表中的图像索引,不是资源的索引。
      

  4.   

    BROWSEINFO bi = {0};