具有透明背景的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 的相关文章

  • MFC中如何将BYTE数组转换为CString?

    如何在 MFC 中将 BYTE 数组转换为 CString 试试这个 例如 如果 x 是你的字节数组 那么 BYTE x 5 x 0 A x 1 0 x 2 B x 3 C x 4 0 CString str LPCSTR x sizeof
  • 如何发光最小。最大和关闭按钮?

    我按照以下指南使用 DWM API 创建自定义 Aero 框架 My work void CMainFrame OnActivate UINT nState CWnd pWndOther BOOL bMinimized CFrameWnd
  • DrawingContext.DrawLine:笔没有完全不透明度?

    当我画这样的东西时 这里只是随机画 public partial class MainWindow Window public MainWindow InitializeComponent DrawingVisual visual new
  • 删除图像c#的圆形透明部分

    我正在位图上创建一个圆圈 但想在其中有一个洞 经过半个小时的搜索 我只找到了将图像裁剪为圆形的方法 困难的是 中间的孔应该像图像的其余部分一样透明 This https i stack imgur com Avdrv png是基础图像并且黄
  • 从 Octave 导出的图中具有透明背景

    我在 Win 10 下使用便携式 Octave 5 1 0 我的意思是写一个具有透明背景的 png 绘图 免责声明 这个问题与下面链接的两个问题类似 我选择了提出当前不同的问题 https meta stackoverflow com qu
  • 如何停止对辅助隐式加载 DLL 的 DLL 劫持

    例如 COMDLG32 DLL 隐式链接到以下系统 DLL 以及其他 xmllite dll dll srvcli dll wkscli dll 链接信息库 netutils dll 微星 dll 由于这些是由操作系统隐式加载的 而不是使用
  • 如何在VC++/MFC中替换字符串中两个子字符串之间的字符串?

    假设我有一个 CString 对象 strMain AAAABBCCCCCCDDBBCCCCCCCCDDDAA 我还有两个较小的字符串 例如 strSmall1 BB strSmall2 DD 现在 我想替换 strMain 中 strSm
  • 您可以将 CMFCVisualManager 与基于对话框的应用程序一起使用吗?

    您可以将 CMFCVisualManager 与基于对话框的应用程序一起使用来更改应用程序的外观吗 如果是这样 它是如何完成的 这个想法是使用随 MSVC 2008 发布的 MFC 功能包来更改控件 例如按钮 的形状 颜色等 不 不能这样做
  • C++ 检查 unicode 字符是否为全角

    如何检查unicode字符是否是全角 我使用Win32 MFC 例如 中是全宽 A不是全角 是全宽 F不是全宽 你需要的是检索东亚宽度 http www unicode org reports tr11 的角色 您可以通过解析来做到这一点东
  • 屏幕截图忽略了一些窗口

    我正在 MFC 中工作 我正在尝试捕获桌面的 bmp 我正在使用 GetDC NULL 来执行此操作 但它似乎忽略了特殊的皮肤窗口 它似乎忽略了用 UpdateLayeredWindow 绘制的窗口 此行为似乎仅发生在 Vista x64
  • createRadialGradient 和透明度

    我正在玩createRadialGradient 在 HTML5 画布上 它就像一个魅力 除非我试图实现 半 透明 我制作了这个 jsFiddle 是为了让事情变得更清晰 http jsfiddle net rfLf6 1 http jsf
  • Android 导航视图透明度

    每个人 是否有可能使Navigation View透明的 我有自定义布局并尝试为此布局设置 50 透明背景 Navigation View or Drawer Layout android background 80000000 但它没有给
  • 以 png 格式剪辑幻灯片 (Delphi 2010)

    I have a filmstrip of images in png format like this 我想知道如何剪辑每个图像并将这些图像放入 TImageList 控件中 并始终保留透明度 EDIT 是的 在设计时 RRUZ 提到的技
  • Create CFrameWnd 给出了第一次机会异常——为什么?

    我正在尝试使用基于 CFrameWnd 的代码编写一个简单的 MFC 应用程序 该应用程序在可滚动窗口中绘制 下面的代码改编自 Prosise Programming Windows with MFC 第 2 版 第 89ff 页 当我在调
  • 从模态 MFC 表单获取输入信息

    我已经创建了表格CPreparationDlg具有Edit Control 然后我创建了创建模态表单的应用程序 在按 确定 后 我需要将编辑控件中输入的文本读入主程序的变量中 最好的方法是什么 class CPreparationApp p
  • 用于基于 MFC 的 GUI 应用程序的免费自动化测试工具

    我是 Windows 开发和测试平台的新手 我正在开发一个基于 MFC 的 GUI 应用程序 并正在寻找有助于 UI 自动化测试的工具 我搜索时出现了一大堆工具 但大多数似乎都不支持MFC 我考虑的选项是 A 编码 UI UI 自动化 看起
  • 更改 GLUT 调用以与 MFC/C++ 一起使用

    我有一个使用 GLUT 进行 OpenGL 渲染的程序 现在我需要它位于 MFC 项目内部 以便它可以与另一个程序组件一起使用 我已经按照这个教程进行操作 http www codeguru com cpp g m opengl openf
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • PyQt:使用 alpha 通道创建 QPixmap,而不是预乘颜色通道

    我想创建一个 QPixmap 来使用 QPainter 进行绘制 QPixmap 应支持透明度 而不使用预乘颜色通道 目前 我通过创建具有所需尺寸的 QPixmap 并用每个通道 包括 alpha 设置为零的 QColor 填充它来实现此目
  • CComboBox DDX_CBString 行为令人困惑

    我在对话框中使用 ComboBox 控件为用户提供一些有用的值 例如 10 20 100 400 800 但让用户根据需要插入准确的值 经过很长时间我发现 如果我输入值40在 Combobox 中 Combobox 始终在 UpdataDa

随机推荐

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