VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 349|回复: 1

VC++基础班-[15]通用对话框讲解

[复制链接]
51_avatar_middle
online_admins Syc 发表于 2018-1-24 23:18:32 | 显示全部楼层 |阅读模式
------------------------------------------ Begin ----------------------------------------
①、文件选择对话框;
//单选;
CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT , _T("Text Files (*.txt)|*.txt|WinRar Files (*.rar)|*.rar|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||"));
if ( fileDlg.DoModal() == IDOK ){
        SetDlgItemText(IDC_PATH_EDIT, fileDlg.GetPathName());
}

//多选;
CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, _T("Text Files (*.txt)|*.txt|WinRar Files (*.rar)|*.rar|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||"));
if ( fileDlg.DoModal() == IDOK ){
        POSITION pos = fileDlg.GetStartPosition();
        while (pos != NULL) {
                CString strPath = fileDlg.GetNextPathName(pos);
                MessageBox(strPath);
        }
}

#####################################################

②、解决多选问题:https://www.cctry.com/thread-21906-1-1.html

CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, _T("Text Files (*.txt)|*.txt|WinRar Files (*.rar)|*.rar|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||"));

const int MAX_FILE_NUM = 100;                                                           //最大允许选择100个文件
fileDlg.m_ofn.lpstrFile = new TCHAR[MAX_PATH*MAX_FILE_NUM]; //重新定义缓冲区的大小
ZeroMemory(fileDlg.m_ofn.lpstrFile, MAX_PATH*MAX_FILE_NUM);  //初始化定义的缓冲区
fileDlg.m_ofn.nMaxFile = MAX_PATH*MAX_FILE_NUM;

if ( fileDlg.DoModal() == IDOK ){
        POSITION pos = fileDlg.GetStartPosition();
        while (pos != NULL) {
                CString strPath = fileDlg.GetNextPathName(pos);
                MessageBox(strPath);
        }
}

delete [] fileDlg.m_ofn.lpstrFile; //别忘了释放

#####################################################

③、初始化打开路径:
fileDlg.m_ofn.lpstrInitialDir = _T("C:\\");
我的电脑 --- ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
我的文档 --- ::{450D8FBA-AD25-11D0-98A8-0800361B1103}

#####################################################

④、扩展文件选择对话框:
应vip会员要求:https://www.cctry.com/thread-18691-1-1.html
1>、添加继承自 CFileDialog 类的子类 CFileDialogEx;
2>、在主对话框界面上按钮的响应中改用 CFileDialogEx 类;
3>、增加 OFN_ENABLETEMPLATE 标志,以进行扩展模版对话框的支持:
CFileDialogEx fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ENABLETEMPLATE, _T("Text Files (*.txt)|*.txt|WinRar Files (*.rar)|*.rar|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||"));

4>、向工程中添加对话框资源模版 IDD_EXT_DIALOG,属性设置如下:
Style:Child
Border:None
Contol:True
3D-Look:True
Clip siblings:True

5>、向文件选择对话框中设置模版:
fileDlg.SetTemplate(0, IDD_EXT_DIALOG);

6>、重载 CFileDialogEx::OnFileNameOK() 函数(文件选择成功后调用),进行自定义的处理:
GetDlgItemText(IDC_PARAM_EDIT, m_strParam);

7>、获得自定义的值:
CFileDialogEx fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ENABLETEMPLATE, _T("Text Files (*.txt)|*.txt|WinRar Files (*.rar)|*.rar|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||"));
fileDlg.SetTemplate(0, IDD_EXT_DIALOG);

if ( fileDlg.DoModal() == IDOK ){
        ShellExecute(m_hWnd, _T("open"), fileDlg.GetPathName(), fileDlg.m_strParam, NULL, SW_SHOW);
}

⑤、改变扩展对话框模版的位置:
只需向扩展对话框模版中加入一个ID为 stc32 的 Static 控件即可!

#####################################################
#####################################################
############## 以下两点内容下节课给大家讲解 ###############
⑥、目录选择对话框;
⑦、让对话框程序支持拖拽。

------------------------------------- End -------------------------------------------

相关课程演示细节还请观看视频教程!
本套教程由VC驿站原创,提供视频教程+售后答疑服务!
教程介绍及详情请见:https://www.cctry.com/thread-17282-1-1.html
VC驿站Vip会员详情请见:https://www.cctry.com/static/vip/index.html




上一篇:VC++基础班-[14]再论“逃跑”按钮的实现
下一篇:VC++基础班-[16]让对话框支持拖拽功能

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-13 08:48

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表