MFC弹出mfc文件夹对话框选择对话框问题

MFC文件复制删除,进度条显示文件复制进度,同时显示百分比 - 下载频道 - CSDN.NET
&&&&MFC文件复制删除,进度条显示文件复制进度,同时显示百分比
&MFC文件复制删除,进度条显示文件复制进度,同时显示百分比
MFC文件复制 删除,进度条显示文件复制进度,同时显示百分比,用文件对话框选择文件,进度条颜色并改变,代码通俗易懂
若举报审核通过,可奖励20下载分
被举报人:
shengang1006
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
评价资源返积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
积分不够下载该资源
如何快速获得积分?
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
MFC文件复制删除,进度条显示文件复制进度,同时显示百分比
所需积分:2
剩余积分:
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
VIP服务公告:一、利用API实现打开文件对话框和利用MFC来实现打开文件对话框。
方法一:API部分:
1 OPENFILENAME 2 char szFile[MAX_PATH]; 3 ZeroMemory(&ofn,sizeof(ofn)); 4 ofn.lStructSize = sizeof(ofn); 5 ofn.lpstrFile = szF 6 ofn.lpstrFile[0] = TEXT('\0'); 7 ofn.nMaxFile = sizeof(szFile); 8 ofn.lpstrFilter = TEXT("all\0*.*\0jpg\0*.jpg\0bmp\0*.bmp\0"); //定义三个选项,all,text和exe 9 ofn.nFilterIndex = 1;
//定义首选项是哪一个10 ofn.lpstrFileTitle = NULL;11 ofn.nMaxFileTitle = 0;12 ofn.lpstrInitialDir = NULL;13 ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;14 if(GetOpenFileName(&ofn))15 {16
::SetDlgItemText(this-&m_hWnd,IDC_EDIT1,szFile);17 }
方法二、MFC实现
CFileDialog dlg(TRUE, NULL, NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
NULL);if(dlg.DoModal() == IDOK){
szFilename = dlg.GetPathName();
::MessageBox(NULL,szFilename,NULL,MB_OK);}
注意:打开文件的方式和打开文件夹的方式是不同的。打开文件的方式是不断的打开直到出现末端为文件,否则遇到文件夹还要继续打开。而打开文件夹则是只要选择到一个路径的文件夹就打开。
下面的这种方式是打开文件夹:MFC实现。
static TCHAR strDirName[MAX_PATH];
BROWSEINFO
CString szString = TEXT("选择一个源文件子文件夹");
bi.hwndOwner = ::GetFocus();
bi.pidlRoot = NULL;
bi.pszDisplayName = strDirN
bi.lpszTitle = szS
bi.ulFlags = BIF_BROWSEFORCOMPUTER | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
LPITEMIDLIST pItemIDList = ::SHBrowseForFolder(&bi);
if(pItemIDList == NULL)
::SHGetPathFromIDList(pItemIDList, strDirName);
CString str = strDirN
if(str != "" && str.Right(1) != '\\')
str += '\\';
::SetDlgItemText(this-&m_hWnd,IDC_EDIT1,str);
trackback:&
阅读(...) 评论()当前访客身份:游客 [
Quantity breeds Quality
:非常感谢楼主的共享,帮了很大忙!!!!
:不错,写得很详细。C++用户路过。
:那各种类型长度,例如int,long那不是都要对各种...
:引用来自“王爵”的评论 因为追求完美是需要付出...
:因为追求完美是需要付出代价的
:现在已经离不开互联网了,年轻的时候还没有资本谈...
:这中方法确实是可以解决,不过还是每次重启eclip...
:引用来自“缘飞情灭”的评论登录成功返回的数据包...
:重装回 win7吧 win8不好用。
:登录成功返回的数据包里面是什么内容
今日访问:122
昨日访问:64
本周访问:319
本月访问:503
所有访问:104119
MFC 打开保存文件对话框
发表于3年前( 15:54)&&
阅读(2224)&|&评论()
0人收藏此文章,
一、打开文件夹:
1、CFileDialog实现
CFileDialog hFileDlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_READONLY,
TEXT(&支持的图像文件 (*.*.*....)|*.*.*.bmp|专用Tiff图像文件(*.*.tif)|*.*.tif|所有文件(*.*)|*.*||&),NULL);
hFileDlg.m_ofn.nFilterIndex=1;
hFileDlg.m_ofn.hwndOwner=m_hW
hFileDlg.m_ofn.lStructSize=sizeof(OPENFILENAME);
hFileDlg.m_ofn.lpstrTitle=TEXT(&打开图像文件...\0&);
hFileDlg.m_ofn.nMaxFile=MAX_PATH;
if(hFileDlg.DoModal() == IDOK)
m_path = hFileDlg.GetPathName();
UpdateData(FALSE);
2、API实现
OPENFILENAMEA
char szFile[260];
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize
= sizeof(ofn);
ofn.hwndOwner
ofn.lpstrFile
ofn.lpstrFile[0]
ofn.nMaxFile
= sizeof(szFile);
ofn.lpstrFilter
= &音频文件\0*.wma\0&;
ofn.nFilterIndex
ofn.lpstrFileTitle
ofn.nMaxFileTitle
ofn.lpstrInitialDir
ofn.Flags = 0;
if (GetOpenFileNameA(&ofn)==FALSE)
return S_FALSE;
CString c_save_path=ofn.lpstrF
二、保存文件
同上,只不过将 CFileDialog hFileDlg(true,NULL 改为 CFileDialog hFileDlg(false,NULL, 或者将GetOpenFileNameA改为GetSaveFileNameA,即可。
三、浏览文件夹对话框
//回调函数
int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
if(uMsg==BFFM_SELCHANGED||uMsg==BFFM_INITIALIZED)
if(uMsg==BFFM_INITIALIZED)
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,LPARAM(lpData));
TCHAR chPath[255]; //用来存储路径的字符串
CString strPath
BROWSEINFO bI
GetModuleFileName(NULL,chPath,MAX_PATH);
ZeroMemory(&bInfo, sizeof(bInfo));
bInfo.hwndOwner
bInfo.lpszTitle
= _T(&请选择路径: &);
bInfo.ulFlags
= BIF_RETURNONLYFSDIRS|BIF_EDITBOX;
bInfo.lpfn
= BrowseCallbackP
bInfo.lParam
= (LPARAM)strPath.GetBuffer(strPath.GetLength());
LPITEMIDLIST lpD //用来保存返回信息的IDList
lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框
if(lpDlist != NULL) //用户按了确定按钮
SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成字符串
strPath = chP //将TCHAR类型的字符串转换为CString类型的字符串
m_save_path=strP
UpdateData(FALSE);
设置对话框的标题:
&dlg.m_ofn.lpstrTitle&=&_T(&Open Image&);
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读& VS2010/MFC编程入门之十一(对话框:模态对话框及其弹出过程)
VS2010/MFC编程入门之十一(对话框:模态对话框及其弹出过程)
&&&&&& 加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨益。趁热打铁,鸡啄米这一节讲讲什么是模态对话框和非模态对话框,以及模态对话框怎样弹出。&&&&&& 一.模态对话框和非模态对话框&&&&&& Windows对话框分为两类:模态对话框和非模态对话框。&&&&& &模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。&&&&& &非模态对话框则是,它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。&&&&&& 大家对Windows系统很了解,相信这两种对话框应该都遇到过。之前的加法计算器对话框其实就是模态对话框。&&&&&& 二.模态对话框是怎样弹出的&&&&&& 毕竟加法计算器程序大部分都是MFC自动生成的,对话框怎么弹出来的大家可能还不是很清楚。鸡啄米下面简单说说它是在哪里弹出来的,再重新建一个新的对话框并弹出它,这样大家实践以后就能更灵活的使用模态对话框了。&&&&&& 大家打开Addition.cpp文件,可以看到CAdditionApp类有个InitInstance()函数,在中提到过此函数,不过那是单文档应用程序App类中的,函数体不太相同,但都是进行App类实例的初始化工作。&&&&& &InitInstance()函数的后半部分有一段代码就是定义对话框对象并弹出对话框的,鸡啄米下面给出这段代码并加以注释:
CAdditionDlg&&&&&&&&&&&
m_pMainWnd&=&&&&&&&& &&
INT_PTR&nResponse&=&dlg.DoModal();&&&&&
if&(nResponse&==&IDOK)&&&&&&&&&&&&&&&&&
else&if&(nResponse&==&IDCANCEL)&&&&&&&&
}&&&&&&&&&弹出对话框比较关键的一个函数,就是对话框类的DoModal()函数。CDialog::DoModal()函数的原型为:&&&&&&&virtual INT_PTR DoModal();   &&&&&&&返回值:整数值,指定了传递给CDialog::EndDialog(该函数用于关闭对话框)的nResult参数值。如果函数不能创建对话框,则返回-1;如果出现其它错误,则返回IDABORT。&&&&&&&调用了它对话框就会弹出,返回值是退出对话框时所点的按钮的ID,比如,我们点了&退出&按钮,那么DoModal返回值为IDCANCEL。&&&&&& 三.添加一个新对话框并弹出它&&&&&&&鸡啄米再为加法计算器程序添加一个对话框,以在计算之前询问用户是否确定要进行计算。大家可以完整的看下对话框的添加和弹出过程。&&&&&&&1.根据&&中所讲的方法,在Resource View中的&Dialog&上点右键选择&Insert Dialog&,创建一个新的对话框模板,修改其ID为IDD_TIP_DIALOG,Caption改为&提示&,然后参考&&中所讲,在对话框模板上添加一个静态文本框(static text),Caption改为&您确定要进行加法计算吗?&,接下来修改OK按钮的Caption为&确定&,Cancel按钮的Caption为&取消&,最后调整各个控件的位置和对话框的大小。最终的对话框模板如下图:&&&&&&&2.根据&&中创建对话框类的方法,在对话框模板上点右键选择&Add Class...&,弹出添加类的对话框,设置&Class name&为CTipDlg,点&OK&。在Solution Explorer中可以看到生成了CTipDlg类的头文件TipDlg.h和源文件TipDlg.cpp。&&&&&&&3.我们要在点&计算&按钮之后弹出此提示对话框,那么就要在&计算&按钮的消息处理函数OnBnClickedAddButton()中访问提示对话框类,所以为了访问CTipDlg类,在AdditionDlg.cpp中包含CTipDlg的头文件:#include &TipDlg.h&。&&&&&&&4.修改OnBnClickedAddButton()的函数体,在所有代码前,构造CTipDlg类的对象tipDlg,并通过语句tipDlg.DoModal();弹出对话框,最后判断DoModal()函数的返回值是IDOK还是IDCANCEL来确定是否继续进行计算。OnBnClickedAddButton()函数修改后如下:
void&CAdditionDlg::OnBnClickedAddButton() &&
&&&&INT_PTR&nR&&&&&&&&&&&&&&&
&&&&CTipDlg&tipD&&&&&&&&&&&&&
&&&&nRes&=&tipDlg.DoModal();&&&&
&&&&if&(IDCANCEL&==&nRes)&&&&&&&
&&&&&&&&return; &&
&&&&UpdateData(TRUE); &&
&&&&m_editSum&=&m_editSummand&+&m_editA &&
&&&&UpdateData(FALSE); &&
}&&&&&&&&&5.测试。编译运行程序后,在对话框上输入被加数和加数,点&计算&,弹出提示对话框询问是否进行计算,如果选择&确定&,则提示对话框退出,并在主对话框上显示被加数和加数的和,而如果选择&取消&,则提示对话框也会退出,但主对话框显示的和不变,即没有进行加法计算。&&&&&& 到此,大家对于模态对话框的基本使用方法应该掌握了吧。希望大家继续关注鸡啄米的MFC教程,我们共同进步。
除非特别注明,文章均为原创
转载请标明本文地址:
作者:鸡啄米
&&( 20:12:32)&&( 20:5:25)&&( 22:18:12)&&( 22:15:37)&&( 22:36:0)&&( 23:17:45)&&( 19:46:26)&&( 22:7:57)&&( 23:32:16)&&( 1:53:2)
这个看的有点晕!由 鸡啄米 于
22:41:46 最后编辑
表示你们都能挂百度。。咱就不通过 。。。鸡啄米 于
22:42:09 回复多试几次啊
觉着还是看着JAVA熟悉,呵呵鸡啄米 于
22:42:38 回复呵呵,你是搞java的,当然了
博主 赶紧更新12,13,14,15。。。。。。。啊嗄。。。。
太谢谢您了,讲解的很详细,很有帮助鸡啄米 于
23:53:00 回复能够帮到你很高兴
你好!非常详细,我是初学者,按照博主的指导做很好!想咨询一下,在源文件中有 Addition.cpp和AddtionDlg.cpp两个函数中分别有void CAdditionApp::OnBnClickedAddButton(),void CAdditionDlg::OnClickedAddButton();我在后者中加入的博文中的函数,想问这有什么区别吗?不是很清楚两个源文件的关系
你好,为什么我的会出现编辑提示窗口时,会提示没可用kong jian a?thank you ! you have helped me a lot .学士之爱2012 于
17:55:22 回复好吧,我删了,重来下好了,呵呵呵
在AdditionDlg.cpp中包含CTipDlg的头文件:#include &TipDlg.h&。 为什么我的还要自己手动加:#include &TipDlg.h&?是不是软件设置的问题?鸡啄米 于
22:48:07 回复这条包含语句就是要手动加的秦风 于
12:57:22 回复这个访问另外一个类,就需要添加要访问类的头文件。如果是这个类的.cpp文件,对应的.h文件不用手动。
最近开始学Windows编程,看了作者的教程很清晰明了。非常适合我这种对Windows编程一无所知,而又不知道从哪下手的新人。 感谢作者的辛勤劳动和无私奉献!!!鸡啄米 于
22:36:22 回复此教程很适合入门,欢迎常来交流
我想知道怎样修改对话框的caption,在代码中,哪个函数里写?鸡啄米 于
22:37:02 回复SetWindowText秦风 于
12:58:59 回复邮件点击对话框,点属性。右侧出现属性列表。找到Caption改
注意到对话框类都分为CTipDlg和CAdditionDlg,是不是每一个新的对话框都要建一个新的类才能使用鸡啄米 于
22:41:18 回复是这样的
为什么我生成的对话框被主对话框挡住了??鸡啄米 于
22:46:44 回复没遇到过,呵呵,你试试用SetWindowPos把它置于最顶层
鸡啄米,如果要在一个对话框上输入一组数据,按下这个对话框上的一个按钮后,弹出一个新的对话框,要求在这个新的对话框上能画出这组数据作为纵坐标的图,怎么实现呢?
就是要求两个对话框之间实现数据传递如何实现?!
老师你好,我有一个问题想问,就是当我把按钮的ID值改为ID_NO,和ID_YES时,代码属性都同时改,可以通过编译,但是,返回值不是ID_NO或ID_YES,请问这是什么原因啊?
运行错误啊!提示:#include tipdlg.h:skipped when looking for precompiled header use.。其他几个错误意思ctipdlg未声明标识符,新手啊,百度上木有答案哪tgyd 于
18:34:06 回复原来#include也要注意顺序啊,放在最后就好了kangkang 于
10:42:56 回复看了这个才知道我的错误在哪,#include &TipDlg.h&要放在#include &additionDlg.h&后面,调用头文件也是有顺序的,涨姿势了
所有的编辑框添加一个变量,用来输出和输入数据,按钮添加消息处理函数,用来弹出提示框和进行数据计算及调用数据流向函数!!!!
很好的教材,赞一个!
你好,新建立的模态对话框的 两个button ,并没有设置 click 事件呀?怎么自动退出的呢?我按照你的 步骤,怎么点击 确定 or 取消
都不能退出呢?dramed 于
16:36:06 回复我也和你一样,不能退出。。
大神太感谢您了我也出现了这个问题 :#include tipdlg.h:skipped when looking for precompiled header use为啥把#include tip.h 放在最后就不会报错了 这其中原理是啥啊
言简意赅,照着做了一遍,O(∩_∩)O谢谢楼主分享!
一次搞定,多谢米哥。。
我的虽然也调试成功了,但是在TipDlg.h头文件下的// 对话框数据enum { IDD = IDD_TIP_DIALOG };中IDD_TIP_DIALOG 出现未定义标示符错误躺着的懒虫 于
1:08:39 回复在头部加入一个#include &resource.h&这是没有引入资源文件的问题。
感谢作者的教程,我觉得此教程很是适合我
MFC弹出对话框后,鼠标进过对话框形状会变化,求解决方法!
m_pMainWnd = &
// 将dlg设为主窗口
请问为什么要有这句??其作用是什么?在我这里没有这句也可以运行,区别是什么?
站长这个MFC的教程看起来和王爽老师的汇编教程一样,本来很生涩的内容看起来都很简单了,希望站长继续加油,谢谢
为什么我CTipDlg的的头文件是CTipDlg然后出错Domodal”: 不是“CDialog”的成员巴恩 于
13:38:15 回复注意大小写再试一下 是DoModal 不是Domodal 哦~
如果要在运行程序的时候显示两个对话框,怎么设置
最近在学mfc,看了一遍孙鑫老师的视频教程,又发现鸡啄米也有教程,就用vs2010再看一遍~学习下基础~
受益匪浅,感谢你的无私奉献
回复27楼在添加类的时候选择基类为:CDialog类,再编译就没问题了
为什么我按下窗口的确定和取消之后没有反应呢?是哪里的程序没有添加进来吗?
今天下午先看到这里,最近刚学MFC,孙鑫的感觉很多都不适合了,真心感谢博主,收获很多。
如果我在给对话框创建了CTipDlg类名后发现这个名字写错了写成CTip,然后我想改回来,我该怎么改呢?
如果我添加好提示对话框后觉得这个提示好多余好恼火想要删掉它,该怎么删除呢?
你好!我用的是vs2013,在模态对话框及其弹出过程这一讲中,我并没有找到你所说的resource view及其子项dialog,请问在已有一个对话框的情况下,再创建一个对话框应如何操作?
完全随机文章

我要回帖

更多关于 mfc按钮弹出对话框 的文章

 

随机推荐