none
子类化窗口,处理消息WM_NCCALCSIZE RRS feed

  • 问题

  • 获取lParam参数转化为NCCALCSIZE_PARAMS结构。

    if iszoomed()=0

    操作rgrc[0].top+100(使窗口的非客户区的上边框变大100)

    else

    操作rgrc[0].top+0(最大化时,边框大小还原)

    endif

    这时会发现一个问题

    如果在客户区100高度内有控件,则该控件不会自行重画 wm_paint也不行

    如图

    2013年10月19日 5:03

答案

  • 自己解决了

    原因是这样的

    当窗口的iszoomed()由0变为1(最大化)之后,会发生多次WM_NCpaint消息(根据自己代码的情况)

    前两次的过程中 窗口的非客户区框架都会延续之前未最大化状态时的情况 于是 导致按钮区域部分被wm_NCpaint自定义处理。

    而按钮又不能自行重绘 于是出现上述情况。

    2013年10月19日 14:58

全部回复

  • 自己解决了

    原因是这样的

    当窗口的iszoomed()由0变为1(最大化)之后,会发生多次WM_NCpaint消息(根据自己代码的情况)

    前两次的过程中 窗口的非客户区框架都会延续之前未最大化状态时的情况 于是 导致按钮区域部分被wm_NCpaint自定义处理。

    而按钮又不能自行重绘 于是出现上述情况。

    2013年10月19日 14:58
  • 小半头砖,你好:

    谢谢你能分享你的答案,这样可以帮助更多都相似问题的人。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年10月21日 2:00
    版主