MFC窗体“抽筋”

      碰到的这个问题不知道用怎样的词去表达。能反映在屏幕上的就是MFC的窗体不能正常的进入,双击图标后,窗体死在那边,进而程序挂掉。在挂掉之前,窗体是不停的闪烁,就像抽筋一样。

产生问题的背景和条件:

1:用的SDI做框架

2:在CMainFrame中将Frame切割成三部分,是三部分。每部分对应一个View

3:用GDI重新画了整个窗体的边框,包括标题栏,MenuToolbar(不是不想用皮肤控件,没办法……)

 

产生问题的时间:

1:美工进入后,给做的工具栏图标,这样需要调整默认工具栏大小。

2:在写代码的机器上没有任何问题,测试跑的笔记本上也没有问题,在别人的机器上就开始抽筋。

 

问题解决:

1:开始认为是自画的TitleMenuToolbar有问题,全部弄成MFC自己的东西,不能解决,还是抽筋。

2:踢掉很多代码,发现,在CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中,如果把有个风格的设置去掉,在很多的机器上能用,但是还有机器不行。

3:仔细观察抽筋的窗体,Toolbar不显示。把ToolbarCreateEx()去掉,不抽了。或者把StatusBar去,掉也不抽。

4:开始考虑屏幕大小和Toolbar大小的问题。

5:经过测试:

A:当屏幕分辨率的Y值为768的时候,ToolbarHeight [44,55]的时候,窗体抽筋。

B:当屏幕分辨率的Y值为800的时候,ToolbarHeight [49,60]的时候,窗体抽筋。

C:当屏幕分辨率的Y值为1050的时候,ToolbarHeight [86,97]的时候,窗体抽筋。

     所以开始怀疑是微软的bug。难道代码要跟每个特定分辨率结合?还有为什么不能使用Height跨度是13?(在下面的最小的框架中也没找到我们哪个地方有个13,这个值肯定不是我设定的)

另外,在PreCreateWindow中去掉那句话的实际作用是使整个Frame的大小变了几个像素。

6:删除98%代码,只剩最简单框架。挨个检查代码。

CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext *pContext)中,对Frame切割了两次:

       m_wndSplitter1.SetColumnInfo(); 

      m_wndSplitter2.SetRowInfo();

试着去掉这两行,这样做当时只是简单的认为初始化的时候很必要设定每个View的大小,因为在下面的OnSize()函数中有设定视图大小的。

     去掉了,不管什么值都没有问题。

     试着去掉其中一行,也是没有问题。

 

总结:

     1:遗留系统总会给我们意想不到的惊喜。

     2MFC太诱惑。

     3:任何东西初始化都是必要的,但不要过于猛烈的初始化。(下面的OnSize函数是可以调整View的大小的)

     4:与Bug作斗争其乐无穷。

 

     我们的生活需要力量。

转载于:https://www.cnblogs.com/onthebox/archive/2009/02/15/1390854.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实现二分查找-两种方式

转:https://blog.csdn.net/maoyuanming0806/article/details/78176957 二分查找是一种查询效率非常高的查找算法。又称折半查找。 起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来辅助查询。本文就…

shiro学习(20): 自定义过滤规则

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 目录结构 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

css 一些 常用布局

div骨架 Code<div id"header">ss</div> <div id"container"> <div id"content">ss</div> <div id"side">ss</div> </div> <div id"pagefooter"…

BUUOJ reverse SimpleRev (爆破)

SimpleRev SimpleRev(flag需加上flag{}再提交) 注意&#xff1a;得到的 flag 请包上 flag{} 提交 拖到ida 找到关键函数&#xff1a; unsigned __int64 Decry() {char v1; // [rspFh] [rbp-51h]int v2; // [rsp10h] [rbp-50h]int v3; // [rsp14h] [rbp-4Ch]int i; // [rsp18h] …

抽象类和接口的对比

转:http://www.importnew.com/12399.html 参数抽象类接口默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话&#xff0c;它需要提供抽象类中所有声明的方法的实现。子类使用关键字…

shiro学习(21):动态添加验证规则1

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 目录结构 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

SCOPE_IDENTITY和@@identity的区别

SCOPE_IDENTITY、IDENT_CURRENT 和 IDENTITY 是相似的函数&#xff0c;因为它们都返回插入到标识列中的值。 IDENT_CURRENT 不受作用域和会话的限制&#xff0c;而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。调用它时必须提供表示表名的字符…

HDU 1203 I NEED A OFFER! (动态规划、01背包、概率)

I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 40874 Accepted Submission(s): 16228 Problem Description Speakless很早就想出国&#xff0c;现在他已经考完了所有需要的考试&#xff0c;准…

索引原理及项目中如何使用索引实例分析

一.索引原理&#xff1a; 为认识索引工作原理&#xff0c;首先有必要对数据表的基本结构作一次全面的复习。 当一个新表被创建之时&#xff0c;系统将在磁盘中分配一段以8K为单位的连续空间&#xff0c;当字段的值从内存写入磁盘时&#xff0c;就在这一既定空间随机保存&#x…

shiro学习(22):动态添加验证规则2

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 目录结构 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

HDU 1231 最大连续子序列 (动态规划)

最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 43843 Accepted Submission(s): 20002 Problem Description 给定K个整数的序列{ N1, N2, ..., NK }&#xff0c;其任意连续子序列可表示为{ Ni, …

shiro学习(23):动态添加验证规则3

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 目录结构 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

借助实时数据推送快速制作在线对战五子棋小游戏丨实战

1 项目概述 游戏开发&#xff0c;尤其是微信小游戏开发&#xff0c;是最近几年比较热门的话题。 本次「云开发」公开课&#xff0c;将通过实战「在线对战五子棋」&#xff0c;一步步带领大家&#xff0c;在不借助后端的情况下&#xff0c;利用「小程序 ✖ 云开发」&#xff0c;…

关于时间复杂度和空间复杂度的计算

转:https://blog.csdn.net/mr_garfield__/article/details/78762478 时间复杂度&#xff1a; 一般情况下&#xff0c;算法中基本操作重复的次数就是问题规模n的某个函数f&#xff08;n&#xff09;&#xff0c;进而分析f&#xff08;n&#xff09;随n的变化情况并确定T&#…

glomosim仿真的运行过程

1 glomosim系统启动的入口是.\main\driver.pc文件中的main()函数。main()函数首先调用parsec_main()函数。parsec_main()函数是parsec运行库函数&#xff0c;我们看不到它的源代码。 2 parsec系统的入口是driver实体。parsec系统启动时首先执行driver实体的代码。driver实体首先…

shiro学习(24):Spring的transaction-manager的用法

<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:tx"http://www.springframework.org/sche…

Spring Boot----SpringBoot整合 Dubbo 和 Zookeeper

下载安装Zookeeper linux 使用docker部署 windows:参考&#xff08;https://blog.csdn.net/ring300/article/details/80446918&#xff09;&#xff0c;下载的zookeeper目录中需要包含lib&#xff08;内置jar包&#xff0c;否则需要自己导入&#xff09; 1、将conf目录下的zoo_…

visual studio 2005 sp1 安装错误解决

要解决此问题, 请按照下列步骤&#xff1a; 1. 单击 开始 单击 运行 &#xff0c; 键入 控件 secpol.msc , 然后单击 确定 。 2. 双击 本地安全策略 。 3. 单击 软件限制策略 。 注意 如果列出, 没有软件限制右键单击 软件限制策略 , 然后单击 新建策略 。 4. 在 对象类…

递归树求解递归算法的时间复杂度

递归算法时间复杂度的计算方程式一个递归方程&#xff1a; 在引入递归树之前可以考虑一个例子&#xff1a; T(n) 2T(n/2) n2 迭代2次可以得&#xff1a; T(n) n2 2(2T(n/4) (n/2) 2) 还可以继续迭代&#xff0c;将其完全展开可得&#xff1a; T(n) n2 2((n/2) 2 2((n/2…

git(4):git安装教程

1首先找到我们下载好的安装包 2打开安装包 3点击next 4点击next 5点击next 6 点击next 7点击next