又有不懂的了,窗口的背景问题? 我做的是一个最顶层窗口,他的背景是透明的,可是每当后面窗口一改变,我的窗口背景就粘上了那一块,请问怎么在后面窗口改变时再把窗口背景画一下? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这时应该重画客户区!调用 InvalidateRect( NULL );参数 NULL 表示重画整个客户区!或者你可你传一个 CRect 对象!来规定重画的范围! 如果你是用MFC做的话。你的问题很大可能是OnDraw或OnPaint出了问题。我估计你在设置重画的客户区的范围(或者说大小)定义的不对。如果你规定的客户区的范围是通过程序算出来的话,我建议你,你的参考系数(或者基数)用系统的分辨率。 我的程序是做一个时钟,在onpaint()里用的映射模式是ISOTROPIC,我用ONTIMER来画时钟走动,如果每次都调用InvalidateRect()的话,画面狂闪。 对,应调用invalidateRect激发WM_ONPAINT消息重画。客户区坐标可通过CRect rectGetClientDC(rect)得到。 我是想问当有别的窗口重叠是,我的窗口会调用哪个函数(或激发哪个事件),OnPaint()吗? 应该设变量来标志要不要Invalidate或者InvalidateRect,在后面窗口改变时就要了,在不需要的时候就不调用 试试SetWindowRgn就可以制作出有透明背景的视窗了。 在我了解的范畴里,好像没有判断后面窗口是否改变的api函数。老兄,如果你要解决“.........可是每当后面窗口一改变,我的窗口背景就粘上了那一块,..........”的话,就好好看看你的OnDraw()或OnPaint()。 你是不是通过在创建时复制保存背景实现窗口透明的?这种方法好像不能解决窗口下面的背景改变的情况(以前的贴子应该有讨论),因为Windows不会将被遮盖窗口的刷新动作通知你。如果只需要在Win2000下实现透明效果的话,可以用Layered Windows方法:利用2000提供的窗口属性:WS_EX_LAYERED 和几个API:SetLayeredWindowAttributesUpdateLayeredWindow 可以实现透明或Alpha混合效果的窗口。 求助,树形控件的消息没有响应怎么办? flash控件未能实例化问题 怎样将一个.txt文件中的内容显示在一个窗体中 程序员,35岁以后做什么? Windows服务的问题(NT Service)超难,高手入 系统消息,应用程序产生的消息和窗口消息,命令消息,通知消息之间的关系是什么 关于多文档中一种文档类型打开个数的问题! 如何在资源管理器的右键菜单中增加项,如:WinRar? 在其它版本的操作系统下,程序运行不正常 咨询下VC中对风格的设置与获取方法 坐标轴标度算法问题,在线等,解决马上结贴 在打开一数据库管理程序时,错误提示:无法对DAO/JET DB引擎进行初始化。怎么解决?
调用 InvalidateRect( NULL );
参数 NULL 表示重画整个客户区!
或者你可你传一个 CRect 对象!来规定重画的范围!
你的问题很大可能是OnDraw或OnPaint出了问题。
我估计你在设置重画的客户区的范围(或者说大小)定义的不对。
如果你规定的客户区的范围是通过程序算出来的话,我建议你,你的参考系数(或者基数)用系统的分辨率。
CRect rect
GetClientDC(rect)
得到。
老兄,如果你要解决“.........可是每当后面窗口一改变,我的窗口背景就粘上了那一块,..........”的话,就好好看看你的OnDraw()或OnPaint()。
利用2000提供的窗口属性:WS_EX_LAYERED 和几个API:
SetLayeredWindowAttributes
UpdateLayeredWindow
可以实现透明或Alpha混合效果的窗口。