处理WM_SETTEXT消息的尴尬

本文探讨了在处理WM_SETTEXT消息时遇到的问题,即如何避免窗口标题更改时导致的标题栏重绘与闪烁现象。文章提出了几种解决方案,包括通过WM_NCPAINT消息重绘标题栏以及临时移除WS_CAPTION样式。
摘要由CSDN通过智能技术生成

处理WM_SETTEXT消息的尴尬 [已结帖,结帖人:kbkman]   .
[华 软 网]
编程论坛  楼主 这个问题已经我已经发过帖,而且网上找了很久,都没有找到答案,我重新整理一下,把问题说明白

前因:我想在自己的软件中实现一套自己做的皮肤
问题:在处理WM_SETTEXT消息时,如果把该消息交给DefWindowProc,那么Caption区会被Windows重新绘制。如果不把他交给DefWindowProc,那么任务栏上的窗口按钮的标题不被更成新的标题

暂时的解决方法:先交给DefWindowProc处理,等Windows绘制完Caption区后,然后再自己再绘制覆盖Caption区。这个方法虽然可以解决上面的问题,但又带来一个严重的缺点,就是这样会引发Caption区闪烁,如果在接受频繁WM_SETTEXT消息时,闪烁会相当严重,显然任何做皮肤的软件商都不会希望这样。

这个问题我已经困扰好久,也没有看到任何人提过类似的问题,相当郁闷,希望大家帮帮忙,分数绝不会少     .
[华 软 网]
编程论坛 1 个网友回答: 用WM_NCPAINT消息,在这里重绘你的标题栏,但当移动窗口,点击标题栏、调整窗口大小等情况都有可能使原来的标题栏出现,所以在DefWindowProc里添加如下代码:
if(message==WM_NCLBUTTONDBLCLK  ||  message==WM_NCLBUTTONDOWN)   
  return  TRUE;    .
[华 软 网]
编程论坛 2 个网友回答: 楼上的,这些消息我都处理了,我现在说的是WM_SETTEXT,这条消息。    .
[华 软 网]
编程论坛 3 个网友回答: 也可以考虑在调用DefWindowProc前先把WS_CAPTION风格去掉,调用完后再加上。 

 

这个是有效的,至少初步试验是有效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值