MFC中在基于对话框的窗体中使用CFileDialog导致菜单栏变灰的解决方案
CSDN的博客编辑器实在是难用……转战博客园
直接把CSDN发的搬过来了
————————————————————————————我是分割线————————————————————————————
第一次发博客好紧张啊,这里的大神都牛逼哄哄的只有我是装逼的我会不会被打啊
先上妮可镇帖
我最近在写一个MFC项目(基于对话框)时发现只要使用了CFileDialog,窗体上的Menu就会变成灰色,但是可以点击,如下图所示。
忘了说,我的环境是Win8.1 + VS2013,弹出CFileDialog的代码和如下:
CFileDialog openfileDlg(
TRUE, // FALSE - Dlg as SaveFile
NULL,
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_T("EasyLive! 谱面文件(*.aji)|*.aji||"),
NULL);
if (openfileDlg.DoModal() == IDOK)
{
//....
}
CFileDialog关闭后,窗体边框和目录变灰,但是可以操作。这个状态对用户体验非常不好。我们想要的是,在CFileDialog以模态窗体弹出时,父窗体变灰,CFileDialog关闭后父窗体外观还原
大神们肯定一眼就看出来了,这不就是窗体失焦了嘛。是的,将窗体最小化在还原,或者用Alt+Tab都可以让窗体恢复
按照常规思路,我可以在CFileDialog关闭后手动调用一下this->SetFocus()解决问题
但是——不要忽略了一个细节:窗体此时是可以操作的。我们知道点击窗体的时候,窗体会自动获得焦点,而现在的情况是点击了窗体后灰色依旧。所以可以预见的是,调用this->SetFocus()是没有效果的(事实证明确实没有效果)
百度一下还可以看到一种所谓的解决方案,说在创建CFileDialog的时候把父窗体传进去。因为同样无效我就不贴代码了。
最后在google出的的一个老外的网站上找到了解决方案:把父窗体的基类,CDialogEx改成CDialog,然后,尼玛问题真的就解决了……简单粗暴
至于为什么会这样,我懒得去刨根问底了。MFC对我来说只是临时性用用,我的重点还是在cocos2dx和U3D。有兴趣的观者可以自行摸索一下,多的就不要再问了,本屌作为逗比,深感没压力,你再问我打屎你
收工!

MFC中在基于对话框的窗体中使用CFileDialog导致菜单栏变灰的解决方案的更多相关文章
- MFC 如何在一个窗体中嵌套在另一个窗体中
其中的一个方法是讲子窗体设置为非模式对话框,具体操作为 :设置子窗体的border属性为none,style为 child. 在父窗体中需要用create来实现,具体例子如下. 在父窗体的OnInit ...
- 2、创建MFC应用程序——基于对话框,时间计时器
使用计时器更新MFC界面时间,频率1s. 文件——新建项目——MFC应用程序,下一步,选择基于对话框,其他默认,完成. 双击窗体(或者鼠标右键)进入类向导,自动创建Ontimer()函数 void C ...
- 【MFC】利用单一对话框内的分页技术实现向导功能(转)
原文转自 http://blog.csdn.net/yongh701/article/details/43793151 所谓的向导功能,在win32的程序中常常见于安装程序或者程序内的设置向导,该向导 ...
- VS中基于对话框的MFC利用换肤改变边框颜色及格式
第一版本: http://ishare.iask.sina.com.cn/f/13836420.html?from=like 2. http://www.cnblogs.com/phinecos/ar ...
- 如何在VS2010的VC++ 基于对话框的MFC程序中添加菜单
方法1:亲测 成功 转载自https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/48338f6b-e5d9-4c0c-8b17-05ca3ef ...
- MFC基于Dialog的工程中使用OSG
osg的例子有osgviewerMFC,是MDI类型的MFC工程,我一般用基于对话框的MFC较多. 注意观察MFC_OSG.h文件中的cOSG构造函数,参数是一个窗口句柄hWnd,这里的窗口可以不只局 ...
- 强行在MFC窗体中渲染Cocos2d-x 3.6
[前言] 把Cocos2dx渲染到另一个应用程序框架中的方法,在2.x时代有很多大神已经实现了,而3.x的做法网上几乎找不着.这两天抽空强行折腾了一下,不敢独享,贴出来供大家参考. [已知存在的问题] ...
- MFC中 创建基于CFormView的文档视图程序
在MFC中可以创建多种类型的窗口程序,如对话框程序.单文档结构程序(非文档/视图结构).单文档(文档/视图结构)以及多文档视图结构程序等. 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对 ...
- MFC中的模态对话框与非模态对话框
模态对话框创建: MyDialog mydlg; mydlg.DoModal() 当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行. 模态对话框的关闭顺序: OnCl ...
随机推荐
- gdb 远程调试android进程 -转
什么是gdb 它是gnu组织开发的一个强大的unix程序调试工具,我们可以用它来调试Android上的C.C++代码. 它主要可以做4件事情: 随心所欲地启动你的程序. 设置断点,程序执行到断点处会停 ...
- How to create a zip file in NetSuite SuiteScript 2.0 如何在现有SuiteScript中创建和下载ZIP压缩文档
Background We all knows that: NetSuite filecabinet provided a feature to download a folder to a zip ...
- postgres 数据库命令行客户端psql的使用命令总结
1.切换到 postgres 用户: 2.输入: psql , 进入到postgresql的客户端psql: 3.\l 查看当前所有的数据库: 4.psql database1 ...
- iOS系统弃用方法更新方法
-boundingRectWithSize:options:attributes:context:用法 - (CGSize)sizeWithFont:(UIFont *)font constraine ...
- log4cxx入门第一篇--一个小例子
先看官网:http://logging.apache.org/log4cxx/index.html 转载自:http://wenku.baidu.com/view/d88ab5a9d1f34693da ...
- 现在都是python 单独开发框架 执行脚本,处理结果,发报告之类的
现在都是python 单独开发框架 执行脚本,处理结果,发报告之类的
- 基于Keepalvied的Mysql主主漂移(切换)
Keepalived实现原理:Keepalived详细介绍简介 实验环境 Master1.Amoeba--IP:192.168.1.5 Master2---IP:192.168.1.10 同时安装ke ...
- webservice-概念性学习(一)
以下是本人原创,如若转载和使用请注明转载地址.本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!博客地址 学习webservice之前呢,我想说我们先学习以下的知识,对你以后的学习 ...
- 4、手把手教你Extjs5(四)主界面上加入顶部和底部区域
这一节为主界面加一个顶部区域和底部区域.一个管理系统的界面可以粗分为顶部标题部分.中间数据展示和处理的部分.底部备注和状态部分. 在增加这二个区域之前,我们先在MainModel.js中加入一些数据. ...
- 《算法导论》插入排序----InsertSort
算法导论,插入排序 public class InsertSort { public static double [] sort(double [] num) { for(int i =1; i< ...