gpt4 book ai didi

c++ - 如何使分组框文本背景透明

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:40 29 4
gpt4 key购买 nike

我想做一个透明的对话框。我在 CDialog 派生类中捕获 OnCtlColor 消息...这是代码:

HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(bSetBkTransparent_)
{
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
}


return hbr;
}

它适用于除组合框 (CStatic) 之外的所有控件。所有标签(CStatic)都涂上了透明文本背景,但组框的文本不是透明的。

我已经在谷歌上搜索过了,但没有找到解决方案。有人知道如何制作真正透明的分组框吗?

顺便说一句,我在 Windows XP 中工作。而且我不想完全绘制控件,以避免在应用程序迁移到另一个操作系统时不得不更改代码。

谢谢,

哈维尔

注意:我最终更改了对话框,因此我不需要使其透明。无论如何,我添加此信息是因为也许有人仍在尝试这样做。组框不是 CStatic 而是 CButton(我知道这不是新的)。我将 Windows XP 主题更改为 Windows 经典,然后组框背景是透明的。坏消息是,在这种情况下,框架线在文本下方可见......因此,如果有人采用这种方法,我认为他/她可能会更好地遵循 Adzm 的建议。

最佳答案

你有两个选择。

您不能使用 Common Controls v6(XP-Styled 控件),这会使您的应用程序失去较新 Windows 版本的花哨感。然而 IIRC 组框将尊重 CTLCOLOR 问题。如果您无论如何都不使用它,并且它仍然不尊重您的颜色,那么您只有一个选择......

也就是自己画。我知道你说过你不想,但有时你不得不这样做。值得庆幸的是,组框是一个非常容易绘制的控件。此页面有一个绘制经典样式组合框的示例:http://www.codeguru.com/cpp/controls/controls/groupbox/article.php/c2273/您也可以使用 XP+ 附带的 UxTheme 库非常简单地绘制它。

如果应用程序将迁移到另一个操作系统,您通常需要处理大量迁移到 MFC 应用程序的问题。如果那是您的目标,那么您真的应该考虑使用跨平台 UI 工具包进行开发。

关于c++ - 如何使分组框文本背景透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/260040/

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