【问题标题】:How to paint transparent areas for child controls?如何为子控件绘制透明区域?
【发布时间】:2009-05-11 13:29:31
【问题描述】:

我有一个 CTabCtrl 子类,我正在尝试覆盖 WM_PAINT 来执行自定义绘图。唯一的问题是,当我更改选定的选项卡时,我会在对话框中留下伪影,在新代码绘制在顶部之前,旧的绘制代码还没有被擦除。 (标准选项卡控件使选定的选项卡比未选定的选项卡显示 2 个像素,因此当您从选定选项卡更改为未选定选项卡时,会留下以前的绘制工件)。

“重新粉刷”该区域的最佳方法是什么?我已经尝试将父控件的 DC 和 BitBlt'ing 放到子 DC 上,但这不起作用,因为父 DC 已经包含此控件的图像。

【问题讨论】:

    标签: windows mfc transparency tabcontrol paint


    【解决方案1】:

    您是否也覆盖了 WM_ERASEBACKGROUND 消息?您可能应该这样做并擦除控件中的区域。

    如果您不想替换所有绘图逻辑,可以使用DrawThemeParentBackground 来绘制背景(XP 及更高版本)。

    【讨论】:

    • 我处理消息,并返回 FALSE 以完成 WM_PAINT 中的所有绘图。我现在就试试那个功能...
    猜你喜欢
    • 2014-10-24
    • 2012-01-31
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2011-12-14
    相关资源
    最近更新 更多