17打开文件对话框 (SDK和MFC两种方法)

来源:互联网 发布:ios 新闻app源码 编辑:程序博客网 时间:2024/05/16 14:26

(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);}elseSetDlgItemText(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());}}


0 0
原创粉丝点击