gpt4 book ai didi

c++ - MFC 自定义控件背景/文字颜色

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:01 24 4
gpt4 key购买 nike

所以我用了几年MFC,做了各种界面,包括自定义控件。我最近被要求开始制作一个可以动态设置背景和文本颜色的界面。我开始研究这个并且遇到了让我的一些自定义控件起作用的问题。生成 WM_CTLCOLOR 消息的所有控件使用该界面都非常好地工作,以允许父级设置子控件的颜色,但并非我自定义的所有控件都生成这些消息。特别是我用 CTabCrtl 和一些基于 CWnd 构建的类。这些类在调用绘制之前似乎不会生成 WM_CTLCOLOR 消息。我想知道是否有人对如何获取控件父 CWnd 的背景和文本颜色或如何手动创建 WM_CTLCOLOR 消息有任何想法。我试图获取控件父级的当前 DC,以便我可以调用 GetBkColor() 和 GetTextColor() 但这样做似乎总是返回默认值。我也尝试过创建 WM_CTLCOLOR 消息,但不知道我应该在哪里创建它们或确切的语法。任何帮助都会很棒。

最佳答案

WM_CTLCOLOR 的想法是必须从 WM_PAINT 和 WM_ERASEBKGND 中调用。在这种情况下,您有一个 DC。您将消息发送给父级,您会得到一个画笔,文本和背景颜色也已设置。

我只看到一个主要问题,即 WM_CTLCOLOR 不是真正的窗口消息...它只是从 SDK 中描述的各种 WM_CTLCOLOR...消息中合成的。

因此语法记录在 MSDN 中。将 DC 句柄转换为 WPARAM 并将窗口句柄转换为 LPARAM...

关于c++ - MFC 自定义控件背景/文字颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24745654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com