(1)
文本框:IDC_EDT_RESULT 选中以下属性: Horizontal scroll ,Vertical scroll,Multiline
checKbox控件: IDC_CHK_MULTISEL 变量:m_chkMultiSel
确定按钮改为SDK ,取消按钮改为MFC,分别添加相应函数:
void COpenFileDemoDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
TCHAR szBuffer[MAX_PATH*10]={0};
OPENFILENAME ofn={0};
ofn.lStructSize=sizeof(ofn);
ofn.hwndOwner=m_hWnd;
ofn.lpstrFilter=_T("文本文件(*.txt)\0*.txt\0所有文件(*.*)\0*.*\0");
ofn.lpstrInitialDir=_T("c:\\");
ofn.lpstrFile=szBuffer;
ofn.nMaxFile=sizeof(szBuffer)/sizeof(*szBuffer);
ofn.nFilterIndex=0;
ofn.Flags=OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_EXPLORER;
if(m_chkMultiSel.GetCheck())
ofn.Flags|=OFN_ALLOWMULTISELECT;
BOOL bSel=GetOpenFileName(&ofn);
if(!bSel)
{
SetDlgItemText(IDC_EDT_RESULT,_T("选择被取消。"));
return;
}
if(m_chkMultiSel.GetCheck())
{
TCHAR szPath[MAX_PATH]={0};
CString str;
int nLen;
TCHAR *p=ofn.lpstrFile+ofn.nFileOffset;
_tcsncpy(szPath,ofn.lpstrFile,ofn.nFileOffset);
if(szPath[ofn.nFileOffset-1]!='\\')
_tcscat(szPath,_T("\\"));
while(TRUE)
{
nLen=_tcslen(p);
if(nLen==0)
break;
str+=szPath;
str+=p;
str+=_T("\r\n");
p+=nLen+1;
}
SetDlgItemText(IDC_EDT_RESULT,str);
}
else
SetDlgItemText(IDC_EDT_RESULT,szBuffer);
}
void COpenFileDemoDlg::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
TCHAR szBuffer[MAX_PATH*10]={0};
CFileDialog dlg(TRUE,NULL,NULL,
OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST,
_T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||"),this);
dlg.m_ofn.lpstrInitialDir=_T("c:\\");
if(m_chkMultiSel.GetCheck())
{
dlg.m_ofn.lpstrFile=szBuffer;
dlg.m_ofn.nMaxFile=sizeof(szBuffer)/sizeof(*szBuffer);
dlg.m_ofn.Flags|=OFN_ALLOWMULTISELECT;
}
if(dlg.DoModal()!=IDOK)
{
SetDlgItemText(IDC_EDT_RESULT,_T("选择被取消。"));
return;
}
if(m_chkMultiSel.GetCheck())
{
CString strfile;
POSITION pos=dlg.GetStartPosition();
while(pos)
{
strfile+=dlg.GetNextPathName(pos);
strfile+=_T("\r\n");
}
SetDlgItemText(IDC_EDT_RESULT,strfile);
}
else
{
SetDlgItemText(IDC_EDT_RESULT,dlg.GetPathName());
}
}