2 y330197352 y330197352 于 2015.06.12 17:28 提问

MFC窗口被覆盖后,窗口上按钮的图标消失了

问题1:MFC窗口上的MFCBUTTON按钮设置了ICON图标,在窗口被覆盖后,这些图标全部消失了,在鼠标滑过时会显示出来。问了度娘说是ONPAINT函数的问题,但这个函数我根本没有改动过啊。。而且,我还尝试在ONPAINT函数中设置按钮的ICON,仍然不行。求助!
问题2:我有2个tab控件,他们是嵌套关系,tab1包含tab2。如何做到在tab1的第1页单击一个按钮,修改tab2第2页的edit控件的值?各位大神如果有代码的话直接写代码吧,因为网上那些方法我都试过了,实在是自己搞不出来。求助!!

9个回答

VisualEleven
VisualEleven   Ds   Rxr 2015.06.12 18:19
已采纳

1. 你的按钮是自绘的吗?需要处理DrawItem虚函数。
2. 创建tab2的时候将tab1的CWnd*指针或者HWND窗口句柄作为tab2构造函数的参数传递过去即可。

y330197352
y330197352 非常感谢您提供的思路!
2 年多之前 回复
a1193561652
a1193561652   Rxr 2015.06.12 17:33

在onpaint中用invalidaterect()函数刷新按钮看行不行。

y330197352
y330197352   2015.06.12 17:43

呃,还是不行。。。会不会跟这个MFCBUTTON控件自身有关系?

shenyamu
shenyamu   2015.06.12 17:49

用sendmessage()来修改tab2第2页的edit控件的值

yangsd18118
yangsd18118   2015.06.13 00:38

没有自动重绘,问题很明显,百度一下应该有。

y330197352
y330197352 我觉得应该不是,因为移动窗口的时候是没问题的,只有当窗口被覆盖后,才会消失
2 年多之前 回复
y330197352
y330197352   2015.06.15 14:15

我知道怎么回事了。说起来挺对不起大家的哈哈

是因为这几个按钮下面垫了一张图片,是picture control。在窗口被覆盖之后,picture control控件会覆盖掉mfcbutton,目前我还没有找到方法可以把picture control这个控件设置成位于按钮下方,即使用CTRL+D更改次序也是不行的。

我的方法如图:
1、把背景色设为跟PICTURE CONTROL一样的颜色;
2、把picture control处理成只保留白色LOGO部分;
3、得到结果图
第一步:图片说明
第二步:图片说明
第三步:图片说明

y330197352
y330197352   2015.06.15 14:18

非常感谢大家的帮助,如果有高手知道如何把按钮放在PICTURE CONTROL控件上并能正常重绘的办法,也请不吝赐教,先谢过啦!

lrwwll
lrwwll   2016.07.13 23:48

我也遇到了这个问题。很头疼,是单文档程序加了一个背景图,然后又添加了两个button,鼠标划过的时候才显示,现在尝试了很多网上的方法还是没有进展,我是个新手,题主写的解决方案我并看不懂,不知能否写的详细一点

oyljerry
oyljerry   Ds   Rxr 2015.06.12 17:49

对按钮进行Invalidate()刷新一下

y330197352
y330197352 不行,我试了的。我再找找原因
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片