MDI打开文件时指定目录

最近写代码练练手,有个小细节是需要在MDI窗口中打开文件 。但MFC默认打开窗口是由WinApp的函数OnFileOpen响应打开窗口事件,而且打开的目录老是变来变去很是烦人。于是百度了半天看到一个方法说是要重载MFC的ID_FILE_OPEN消息,但找了半天也没找出个所以然来,于是顺着MFC的代码看ID_FILE_OPEN处理,就二三句代码的事,其实很简单。

void CWinApp::OnFileOpen()
{ENSURE(m_pDocManager != NULL);m_pDocManager->OnFileOpen();
}
void CDocManager::OnFileOpen()
{// prompt the user (with all document templates)CString newName;if (!DoPromptFileName(newName, AFX_IDS_OPENFILE,OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, TRUE, NULL))return; // open cancelledAfxGetApp()->OpenDocumentFile(newName);// if returns NULL, the user has already been alerted
}

逻辑就是CWinApp响应ID_FILE_OPEN事件,调用CWinApp::OnFileOpen(),而在OnFileOpen()调用CDocManager::OnFileOpen(),在这个函数中也就两句代码,第一句用来显示打开文件的对话框,第二句把对话框中获取的文件名为参数调用 OpenDocumentFile。所以把第一句用CFileDialog替换换就行了。
以vs2017为例记录之。
1、首先CXXXApp响应ID_FILE_OPEN事件。但MFC框架已经默认响应了这个事件,所以要把ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen)这句注释掉。

BEGIN_MESSAGE_MAP(CXXXApp, CWinAppEx)ON_COMMAND(ID_APP_ABOUT, &CXXXApp::OnAppAbout)// 基于文件的标准文档命令ON_COMMAND(ID_FILE_NEW, &CWinAppEx::OnFileNew)//ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen)ON_COMMAND(ID_FILE_OPEN, &CXXXApp::OnFileOpen)
END_MESSAGE_MAP()

2、加入响应ID_FILE_OPEN事件的代码

void CXXXApp::OnFileOpen()
{// TODO: 在此添加命令处理程序代码CFileDialog Dlg(TRUE, _T("Dlg"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("(*.Dlg)窗体文件|*.Dlg||"));CString str = szProcessPath;str += _T("\\Backup");Dlg.m_ofn.lpstrInitialDir = str;if (Dlg.DoModal() != IDOK)return;str = Dlg.GetPathName();AfxGetApp()->OpenDocumentFile(str);
}

3、搞定收工,很简单的事。

MDI打开文件时指定目录相关推荐

  1. 反汇编软件IDA V7.2打开文件时python.dll error: 找不到指定的模块

    #反汇编软件IDA V7.2打开文件时问题: LoadLibrary(C:\Program Files\IDA 7.2\plugins\python.dll) error: 找不到指定的模块. C:\ ...

  2. 安装包制作工具 SetupFactory使用4:安装时写入注册表和拷贝文件到指定目录

    环境: window10 SetupFactory9.1 一.安装时写入注册表 首先,我们需要准备好注册表项(我们可以直接在注册表编辑器中编辑好,然后导出),如下: 导出后的文件如下(testpubl ...

  3. python为csv文件添加表头_python读csv文件时指定行为表头或无表头的方法

    python读csv文件时指定行为表头或无表头的方法 pd.read_csv()方法中header参数,默认为0,标签为0(即第1行)的行为表头.若设置为-1,则无表头.示例如下: (1)不设置hea ...

  4. 【Windows问题】:打开文件时显示安全警告(目前未出现例外)

    Windows问题--打开文件时显示安全警告 文章目录 Windows问题--打开文件时显示安全警告 一.问题 1.常见场景 2.问题描述 二.解决方案 三.具体流程 1.Win+R,打开运行,输入` ...

  5. pandas使用read_csv函数读取文件时指定数据列的数据类型、pandas使用read_csv函数读取文件时通过keep_default_na参数设置缺失值替换为空字符串

    pandas使用read_csv函数读取文件时指定数据列的数据类型.pandas使用read_csv函数读取文件时通过keep_default_na参数设置缺失值替换为空字符串 目录

  6. linux tar.gz指定目录,tar.gz包内提取某个文件在指定目录下。

    想试试不解压从tar.gz包内提取某个文件到指定目录下,百度来的全是一个模板,没有示例,根本莫名其妙.经自己测试才算明白. 百度来的方法 tar包 tar tvf yourtarfile |grep ...

  7. python中打开文件时只允许写入的模式是_在open函数中访问模式参数使用()表示打开一个文件只用于写入。(4.0分)_学小易找答案...

    [单选题]溢流坝属于( ) [单选题]在重力坝的底部沿坝轴线方向设置大尺寸的空腔,即为( ) [单选题]模式()的用途是打开一个文件用于追加.如果该文件已存在,文件指针将会放在文件的结尾.(4.0分) ...

  8. html打开方式怎么没有,打开文件时右键菜单中没有“打开方式”怎么办?

    我们的电脑上有各种格式的文件和资料,每个文件都有相应的应用程序可以打开查看,比如听歌要打开酷狗,看视频用优酷,有的文件比如PDF格式就需要下载相应的应用程序才能点开查看.当我们在网上下载了一个文件,想 ...

  9. (压缩包在本地目录或由链接请求)使用jszip解压文件或compressing解压文件到指定目录,写个node脚本

    使用jszip解压文件与compressing解压zip文件到指定目录 一.介绍jszip和compressing模块 jszip和compressing模块都是可以压缩和解压缩zip文件,都可以通过 ...

  10. office2010连接服务器响应慢,从网络位置打开文件时,Office 运行缓慢或停止响应 - Office | Microsoft Docs...

    从网络位置打开文件时,Office 程序运行缓慢 (可能停止响应) 挂起文件. 2021/4/9 适用于: Office 365, Excel 2019, Excel 2016, Excel 2013 ...

最新文章

  1. NM-1A-OC3MM和NM-CIDS-K9模块的苦恼
  2. QQ视频直播架构及原理
  3. python正则匹配数字_Python正则表达式,用于字母数字
  4. java 内部类_Java——内部类详解
  5. 【STM32】 keil软件工具--configuration详解(下)
  6. iOS 5将加入全新的通知信息和桌面Widgets
  7. java 自定义注解_Java注解
  8. 诺基亚9 PureView五摄机皇再曝光 低配高价毫无诚意?
  9. Likecloud-吃、吃、吃
  10. java私聊_【转帖】实现了视频私聊功能
  11. 8.0魔兽服务器维护时间,魔兽世界8.0大米开放时间一览_wow8.0大秘境开启时间介绍_3DM网游...
  12. 如何将一个String和多个String值进行比较
  13. .net core webapi 导出excel(两种方式EPPLUS、NPOI),返回下载地址或文件流
  14. Flash 加密和破解
  15. vue2生成图片导出pdf
  16. 蓝桥杯质数的后代码c语言,质因数
  17. 大学计算机应用基础第二版习题答案,《大学计算机应用基础》各章习题参考答案...
  18. 通过PHP保存图片到mysql,如何使用MySQL保存一个图片并且用PHP得到它
  19. 今日头条2017校招笔试题
  20. AIS 2019(ACL IJCAI SIGIR)论文研讨会研究趋势汇总

热门文章

  1. docker---docker save
  2. wifi6路由器使用tcpdump抓包
  3. 计算机桌面的字有毛边,windows系统屏幕显示的字体发虚有锯齿
  4. 正态分布是离散分布还是连续分布_内容范围:正态分布,泊松分布,多项分布,二项分布,伯努利分布...
  5. 超声广义相干因子( Generalized Coherence Factor,GCF)波束合成仿真
  6. JavaOOP项目 - 嗖嗖移动业务大厅
  7. 外卖产品(饿了么、美团外卖、百度外卖)竞品分析
  8. 计算机c盘被保护怎么解开,电脑磁盘被写保护怎么办?总结几种去掉电脑磁盘写保护的方法...
  9. 什么是晶振?晶振在电路中的作用是什么?
  10. SAP SD跨公司销售案例教程IDOC配置