CFormView创建后有时不显示控件


运新环境:VS2012


测试程序:MFC下创建的多文档程序(默认设置)


附加条件:

1.程序中的button使用自定义的btn类继承并扩展重写了CButton的部分函数(DrawItem、鼠标的经过、按下、按钮正常状态、热点状态处理函数函数),使用btn类定义了五个按钮:btn1、2、3、4、5,放在四个CFormView窗体上(一个窗体上五个按钮)


2.测试是在一个文档的一个child框架(主框架MainFrm下的ChildFrm)下的一个视窗口中进行,视窗口被分为4个片,每片对应一个CFormView类


说明:按钮的性质是自会性质,虽然btn类继承自CButton类,但此处按钮显然是要实现动态的背景切换,已然要使用自绘(或许出现的问题也与此有关)


出现的问题:当编译无错、无警告后,运行程序的Release版本,程序有时会的出现窗口的4个片区的某个片无法显示CFormView上的控件(这种情况的出现是随机的毫无规律)


经调试发现,使用控件的 IsWindowVisible() 函数,可以判断出控件是已成功创建的。


此问题目前无法解决。


初步怀疑:

1.问题出在CFormView的初始化上绘制背景时将以初始化的控件覆盖了(可是我并没有给CFormView使用背景图片啊!!!)


2.另一种可能,在没有添加任何背景图片的情况下,CFormView初始化时默认的画笔绘制的背景覆盖了控件(这种可能和CFormView窗体的结构有关,难道CFormView默认是有分层?背景是一层,控件又是一层?)


3第三种可能,可能是因为我是用了自会按钮(但是我添加了一个系统提供的控件不进行任何自绘,这个控件也照样是不显示啊!!!)


4.第四种可能,程序自身问题,也许是,在写程序时,忘记添加了某种判断机制才导致这种情况。


无论哪种情况,此问题目前无解,留待观察研究!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值