【问题标题】:What cause WS_TABSTOP to affect window painting order?是什么导致 WS_TABSTOP 影响窗口绘制顺序?
【发布时间】:2012-03-16 19:04:33
【问题描述】:

在 WTL 中,CBitmapButton 不支持带有透明层的图片,例如 PNG。 所以我自定义代码以使用 GDI+ 绘制 PNG,将其命名为 CPNGButton。 但是在win XP上事情很奇怪。 当按钮被其他窗口重叠时,按钮先接收到WM_PAINT,再接收到父级,导致结果不正确。

--->

我检查资源并从按钮的模板中删除 WS_TABSTOP 属性,一切正常,父窗口首先接收 WM_PAINT,然后是按钮。 是什么原因导致 WS_TABSTOP 影响窗口绘制顺序?

【问题讨论】:

    标签: c++ windows visual-c++ wtl wm-paint


    【解决方案1】:

    当您不绘制背景时会发生这种情况。这会在窗口中留下一个“洞”,您可以看到您后面的任何窗口的像素。或者桌面,如果没有这样的窗口。不知道这与 WS_TABSTOP 有什么关系。

    使用 WS_EX_TRANSPARENT 样式标志。这告诉 Windows 您希望按钮的父级在客户端窗口中绘制自身以提供背景像素。

    【讨论】:

    • 即使删除了WS_TABSTOP,这种情况有时仍然会出现。添加 WS_EX_TRANSPARENT 效果很好!
    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多