Windows not support files longer than 259.
TCHAR lpstrFilename[MAX_PATH]="";
OPENFILENAME ofn;
CString pathname;
CString filename;
int nTerm=0;
char stemp[255]={0};
TCHAR *p;
memset(&ofn,0,sizeof(OPENFILENAME));
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.lpstrFile=lpstrFilename;
ofn.hwndOwner=m_hWnd;
ofn.nMaxFile=MAX_PATH*2;
ofn.lpstrFilter="All files(*.*)\0*.*\0";
if(WINVER >= 0x0400)
ofn.Flags=OFN_ALLOWMULTISELECT|OFN_EXPLORER|OFN_LONGNAMES|OFN_FILEMUSTEXIST;
else ofn.Flags=OFN_FILEMUSTEXIST;
ofn.lpstrTitle="GetOpenFileName";
ofn.nFilterIndex=0;
if(GetOpenFileName(&ofn))
{
pathname=lpstrFilename;
if(pathname.Right(1)!="\\")pathname+="\\";
for(int i=0;;i++)
{
if(lpstrFilename[i]==0)
{
nTerm++;
if(lpstrFilename[i+1]==0)
{
if(nTerm==1)
m_FileList.AddString(lpstrFilename);
break;
}
else
{
p=&(lpstrFilename[i+1]);
strcpy(stemp,p);
m_FileList.AddString(pathname+stemp);
}
}
}
}