具有透明背景的CWnd

2024-03-16

我想创建一个基于 CWnd 的类,它将引入具有透明背景的控件。

只要内容是静态的,创建一个控件并用透明背景绘制其内容对我来说没什么大不了的。

问题是当我想创建一个内容不断变化的控件时。这是因为我不知道如何用父背景删除控件的内容(一般情况下可能不仅仅是纯色)。

因此,我想要实现的目标是在绘制其内容之前擦除控件,因为该控件从未存在过(父控件,也许可能会出现其他控件),并且比在此位置绘制控件。


如果你想创建一个顶级窗口,罗尔的答案很好。如果您需要创建一个子窗口(如果您正在创建一个控件,则必须是这种情况),您不能使用 WS_EX_LAYERED (我认为这从 Windows 8 开始已经改变)。

简单的技巧是将父对象绘制为控件背景。所以在 OnEraseBkgnd 中你可以添加以下代码:

BOOL uiBarcodeButton::OnEraseBkgnd(CDC* pDC)
{
    CRect rect;
    GetClientRect(rect);

    return afxGlobalData.DrawParentBackground( this, pDC, rect);
}

不确定 afxGlobalData 全局变量是否仅适用于 MFC 2008 功能包。如果您使用的是以前版本的 MFC,则可以使用 DrawParentBackground 中的代码:

ASSERT_VALID(pDC);
ASSERT_VALID(pWnd);

BOOL bRes = FALSE;

CRgn rgn;
if (rectClip != NULL)
{
    rgn.CreateRectRgnIndirect(rectClip);
    pDC->SelectClipRgn(&rgn);
}

CWnd* pParent = pWnd->GetParent();
ASSERT_VALID(pParent);

// In Windows XP, we need to call DrawThemeParentBackground function to implement
// transparent controls
if (m_pfDrawThemeBackground != NULL)
{
    bRes = (*m_pfDrawThemeBackground)(pWnd->GetSafeHwnd(), pDC->GetSafeHdc(), rectClip) == S_OK;
}

if (!bRes)
{
    CPoint pt(0, 0);
    pWnd->MapWindowPoints(pParent, &pt, 1);
    pt = pDC->OffsetWindowOrg(pt.x, pt.y);

    bRes = (BOOL) pParent->SendMessage(WM_ERASEBKGND, (WPARAM)pDC->m_hDC);

    pDC->SetWindowOrg(pt.x, pt.y);
}

pDC->SelectClipRgn(NULL);

return bRes;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有透明背景的CWnd 的相关文章

  • Pygame 或 Python 中的透明窗口

    我正在尝试为我的游戏制作一个透明窗口作为启动屏幕 图像具有透明度 但我无法使窗口透明 例如在其后面看到屏幕 桌面等 我发现的所有内容都不能使用 pygame 我可以从中提取任何外部库来实现这一点吗 顺便提一句 这完全是一个Linux项目 所
  • 将简单的 MFC CView/CDocument/CSingleDocTemplate 应用程序转换为 ActiveX 控件

    我有一个相当简单的 MFC 应用程序 它只定义了自己的子类CDocument CView and CFrameWnd并通过使用它们CSingleDocTemplate在视图的树中显示文档的只读内容 都是非常标准的MFC MVC 我现在需要转
  • 在 PIL 中保存 GIF 时透明度不一致

    我正在编写可以覆盖图像并使背景透明的脚本 输出应该是 GIF 格式 该脚本有效 但对于某些图像 透明度未按预期工作 这是脚本 from PIL import Image from PIL import ImageDraw from PIL
  • AfxGetAppName() 返回垃圾字符

    我的应用程序中有以下代码行 CString strAppName AfxGetAppName 有时会充满strAppName出现了垃圾字符 我不明白为什么 有人有主意吗 TIA 如果你改变的话这是可能的m pszAppName手动 在应用程
  • 微软图表:透明度

    我想要一个具有透明背景的图表 因此 PNG 似乎是一个不错的选择 但是当我设置透明背景时 轴标签的质量急剧下降 我该如何解决 请参阅以下代码 就目前情况而言 图表具有透明背景 正如我所希望的那样 但文本质量很差 如果我注释掉两个 Color
  • 如何在 Android 上使背景 20% 透明

    我如何制作一个背景Textview大约 20 透明 不完全透明 背景中有颜色 即白色 使用下面的黑色代码
  • 默认情况下启用或禁用菜单项。为什么?

    我有一些遗留代码 由于某种原因 菜单项在启动时被启用或禁用 我的问题是 如何 有没有办法在不调用 EnableMenuItem 函数的情况下执行此操作 MFC 有没有办法做与资源设置所说相反的事情 我也不明白为什么当最后一个子窗口关闭时 当
  • 如何设置键绑定以使 Emacs 按照我的需要透明/不透明?

    我想在 Emacs 中有一个命令让它按照我想要的方式不透明 透明 请参阅神话般的question https stackoverflow com questions 2010158 setting an emacs background i
  • 如何向 CMFCPopupMenu 添加图标?

    我想用CMFCPopupMenu用于右键单击期间的弹出菜单 如何添加图标CMFCPopupMenu 这是我在基本 MFC 应用程序中尝试的示例代码 CMFCPopupMenu TestCMFCPopMenu new CMFCPopupMen
  • 如何在 JLayeredPane 上设置背景颜色?

    我很好奇为什么在 JLayeredPane 上调用 setBackground Color 似乎并没有真正设置背景颜色 我猜这与 JLayeredPane 由于某种原因必须具有透明背景有关 不管怎样 这里有一些代码显示了这个问题 这是在 M
  • LWJGL 窗口具有透明背景?

    我想创建一个没有 黑色背景 区域的窗口 但您可以看到任何其他打开的窗口等 也就是说 渲染场景并且仅渲染场景 不留框架 不留背景区域 我读过一种方法 该方法涉及渲染到隐藏的 OpenGL 窗口并将其缓冲在内存中 创建透明分层窗口以及从内存复制
  • 是否有适用于 IE6 的 JavaScript PNG 修复程序允许 CSS 背景定位?

    我已经看到了一些允许 PNG 图像在 Internet Explorer 6 中具有透明度的修复 但我还没有找到一个也允许您在 CSS 中设置背景位置的修复 如果你使用精灵 那就会破坏交易 我求助于使用 GIF 质量不高 根本不使用透明图像
  • 如何将基数词转换为序数词

    有没有一种简单的方法可以将数字 1 2 3 转换为 1st 2nd 3rd 并且以这种方式我可以为该函数提供一种语言并具有它会返回我目标语言的正确形式吗 标准 C stl 或 boost 都可以 MFC 或 ATL win32 api 或我
  • android AlertDialog 具有透明背景

    我有一个自定义的 AlertDialog 我想使其背景完全透明 通常为了使活动完全透明 我会执行以下操作 将背景设置为 00000000在 xml 布局中 在清单集中android theme android style Theme Hol
  • 如何在透明背景图像后面添加背景颜色?

    我试图在透明背景图像后面添加背景颜色 但它不起作用 我希望它位于名为 标题 的 div 中 我尝试先使用 png 文件 然后使用 gif 文件 我以为所有的 gif 都是透明图像 任何帮助 将不胜感激 heading background
  • 获取正在运行的程序的属性

    我想开发一个程序 其 ID 是一张牌 因为它在另一个正在运行的程序 例如扑克或红心游戏或其他程序 中播放 我首先尝试获取有关已运行的游戏程序的所需信息 但我从一开始就遇到了问题 我正在运行 MSVC 2013 并开发 MFC 应用程序 现在
  • 如何将透明光标渲染到位图并保留 alpha 通道?

    我使用下面的代码来渲染透明图标 private void button1 Click object sender EventArgs e using LoadCursorFromFile from user32 dll var cursor
  • 捕获由纯 C++ dll 中的 MFC 应用程序生成的 Windows 消息

    首先 这可能吗 我有一个与某些硬件接口的第三方 dll 它是用MFC编写的 我 从 dll 供应商处 收到了一个示例 Visual Studio 2010 解决方案 该解决方案只有一个项目 调用相关第三方 dll 的 MFC 应用程序 ex
  • Create CFrameWnd 给出了第一次机会异常——为什么?

    我正在尝试使用基于 CFrameWnd 的代码编写一个简单的 MFC 应用程序 该应用程序在可滚动窗口中绘制 下面的代码改编自 Prosise Programming Windows with MFC 第 2 版 第 89ff 页 当我在调
  • 具有键唯一性和按位置排序的 MFC 字典集合

    看着表上http msdn microsoft com en us library y1z022s1 28v vs 80 29 aspx core collection shape features http msdn microsoft

随机推荐

  • Google 图表嵌入 API 无法正常工作

    我正在使用 Embed API 从 ServiceAccount 在我的网站上包含 GA 图表 该网站是一个使用 AngularJS 的单页应用程序 我为每种图表类型和控制器创建了多个指令 将其命名GAController 在他们之间共享
  • Pyspark 将结构数组转换为字符串

    我在 Pyspark 中有以下数据框 name subject score Tom math 90 Tom physics 70 Amy math 95 I used collect list and struct函数来自pyspark s
  • C++ 错误:转换为非标量类型 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我似乎在以
  • JavaFX HMTLEditor 对“返回”键没有反应

    我试图用 JavaFX 做一些实验HTMLEditor成分 我使用了以下代码 摘录 fxPanel new JFXPanel Platform runLater new Runnable Override public void run G
  • F# 中元组的不完整模式匹配

    我定义一个点 type TimeSeriesPoint lt T gt Time DateTimeOffset Value T 和一系列 type TimeSeries lt T gt TimeSeriesPoint lt T gt lis
  • canvas.toDataURL() 在不同浏览器上创建不同的base64编码字符串

    我有一个应用程序 用户需要相互传输数据 无法通过服务器 我认为从这些数据中渲染图像并让他们发送该图像可能会很好 由于各种原因 二维码不起作用 I came 浏览这个 github 仓库 https github com mudcube PN
  • 如何在从另一个存储库扩展模板的管道定义中使用我的模板?

    我有一个从另一个存储库扩展模板的管道 该外部模板需要一个stageList called stages 我的管道 resources repositories repository templates type git name Other
  • 在消息驱动Bean中动态配置MappedName注释

    使用消息驱动 BE 时 接收消息的目标名称被硬编码在注释中 MessageDriven mappedName someDestinationName 有没有办法在运行时添加这些信息 下面是一个示例消息驱动 Bean 类 package md
  • 在特定层上多次重试后 Docker 推送失败

    我正在尝试为我构建的 Angular 5 项目推送我自己的 Docker 镜像 我的 docker 镜像扩展了众所周知的node carbon图像并运行以下命令 FROM node carbon WORKDIR usr src app CO
  • Xna:模拟Texture2D

    我正在编写 WinForms Xna 应用程序 我需要某种方法来抽象出与我的控制器 模型代码中的 GraphicsDevice 的交互 我创建了一个接口 IGraphicsService 我将用它来抽象诸如加载纹理之类的东西 但我不知道当我
  • 修复了移动 Safari 网站上带有文本字段的标题

    我已经四处寻找了一段时间 但似乎找不到解决此问题的方法 当输入字段在移动 safari 中获得焦点 尚未检查其他浏览器 时 固定元素将由于 safari 将该元素置于视图中 更靠近中心 而跳转 该错误仅在用户滚动时发生 如果用户仍位于页面顶
  • 我可以使用python创建类似flash的浏览器游戏吗?

    是否可以使用python创建类似flash的浏览器游戏 其实我想用它来做经济模拟 不过相当于页游一样 Davoud 答案是肯定的 假设您认为这是您想要做的事情的一个很好的例子 http pyjs org examples Space htm
  • Phong 照明:单独添加镜面照明还是与环境光和漫反射一起添加?

    我正在尝试实现 Phong 照明 在某些教程中 将镜面光照添加到环境光照和漫射光照中 然后将总光照乘以纹理颜色 我还看到了一个教程 其中在添加环境光和漫射光与纹理颜色相乘之后单独添加镜面照明 这是一个片段着色器 其中包含两个选项和屏幕截图
  • 使用 SAVON response.to_hash 转换方法解析 SOAP 响应

    我在解析 SOAP 响应时遇到问题 这是我的代码 require rubygems require savon client Savon Client new http 1 2 3 4 xyz abcd fsds wsdl res clie
  • 在 Heroku 上备份/加载后,PostgreSQL 数据库大小较小

    最近 我创建了一个新的 Heroku 应用程序用于生产 并使用我从临时数据库中获取的备份填充它的数据库 问题在于 如 Heroku 的 Postgres 网页上所示 这两个数据库的数据库大小不同 我从中获取备份的第一个数据库大小为 360
  • 更改 React Bootstrap 中展开的手风琴面板的标题样式

    对于单击和活动 展开的面板 我想更改 css 样式 那是因为我想切换面板标题内向上或向下指向的图像箭头 我能够获取打开面板的 eventKey 但无法使用面板标题CSS 类 你有什么建议 Thanks 代码如下
  • 如何将已通过身份验证的用户从登录页面重定向到主页

    我正在使用 Apache Shiro 开发 JSF 应用程序 我使用 Shiro 验证用户并将她重定向到主页 这没有问题 身份验证后 当我尝试访问登录页面时 它不会将我重定向到主页 即使已经有登录的用户 我也可以再次登录 我正在做程序化登录
  • Java、C++、C# 等如何通过 < 和 > 解决这种特定的语法歧义?

    我曾经认为 C 是一种 奇怪 的语言 它与 lt and gt 但是在尝试实现解析器之后 我想我发现了一个打破的例子大概every java中的通用方法调用是
  • 谁有关于 PostgreSQL 后台进程的文档?

    谁有关于 PostgreSQL 后台进程的文档 我想了解有关这些后台进程的详细信息 postgres 记录器进程 postgres 编写进程 postgres wal writer进程 postgres autovacuum 启动程序进程
  • 具有透明背景的CWnd

    我想创建一个基于 CWnd 的类 它将引入具有透明背景的控件 只要内容是静态的 创建一个控件并用透明背景绘制其内容对我来说没什么大不了的 问题是当我想创建一个内容不断变化的控件时 这是因为我不知道如何用父背景删除控件的内容 一般情况下可能不