char szFilter[] = "BMP Files(*.bmp)\0*.bmp\0\0";
CFileDialog file_dlg(TRUE);
file_dlg.m_ofn.Flags |= OFN_ALLOWMULTISELECT;
file_dlg.m_ofn.Flags |= LBS_EXTENDEDSEL;
file_dlg.m_ofn.lpstrFilter = (LPSTR)szFilter; m_listbox.ResetContent(); if(file_dlg.DoModal() == IDOK)
{
AfxMessageBox("aaaa");
CString temp = file_dlg.GetPathName();
POSITION pos = file_dlg.GetStartPosition();
do 
{
temp = file_dlg.GetNextPathName(pos);
m_listbox.AddString(temp);
} while(pos);
}
else
{
AfxMessageBox("bbb");
}为什么这段代码,最多只能够打开16个文件,超过16个,就走了 AfxMessageBox("bbb");
请各位帮忙解答一下。谢谢

解决方案 »

  1.   

    TCHAR lpstrFilename[MAX_PATH]; 
    file_dlg.m_ofn.lpstrFile = lpstrFilename;
    file_dlg.m_ofn.nMaxFile = MAX_PATH;
      

  2.   

    TCHAR lpstrFilename[MAX_PATH]; 
    char szFilter[] = "BMP Files(*.bmp)\0*.bmp\0\0"; CFileDialog file_dlg(TRUE);
    file_dlg.m_ofn.Flags |= OFN_ALLOWMULTISELECT;
    file_dlg.m_ofn.Flags |= LBS_EXTENDEDSEL;
    file_dlg.m_ofn.lpstrFile = lpstrFilename;
    file_dlg.m_ofn.nMaxFile = MAX_PATH;
    file_dlg.m_ofn.lpstrFilter = (LPSTR)szFilter; m_listbox.ResetContent(); if(file_dlg.DoModal() == IDOK)
    {
    AfxMessageBox("aaaa");
    CString temp = file_dlg.GetPathName();
    POSITION pos = file_dlg.GetStartPosition();
    do 
    {
    temp = file_dlg.GetNextPathName(pos);
    m_listbox.AddString(temp);
    } while(pos);
    }
    else
    {
    AfxMessageBox("bbb");
    }这样添加吗?
    执行就错误啊?
      

  3.   

    do 
    {
    temp = file_dlg.GetNextPathName(pos);
    m_listbox.AddString(temp);
    } while(pos);不安全;while(pos);
    {
    temp = file_dlg.GetNextPathName(pos);
    m_listbox.AddString(temp);
    } 其他看起来没什么错误,建议lpstrFilename[MAX_PATH]; 初试化设置一下,memset.
      

  4.   

    哪里出错??缓冲改大点TCHAR lpstrFilename[MAX_PATH*100]; 
    file_dlg.m_ofn.nMaxFile = MAX_PATH*100;