热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

困扰很久问题:TabCtrl渐变窗口中有CheckBox控件,此CheckBox控件背景如何透明?

这是Windows桌面属性窗口这是浩方对战平台设置窗口这是我的测试程序窗口大家可以发现我的CheckBox(还有RadioBox等)的背景都无法和TabCtrl的
这是Windows桌面属性窗口

这是浩方对战平台设置窗口


这是我的测试程序窗口


大家可以发现我的CheckBox(还有RadioBox等)的背景都无法和TabCtrl的向下渐变的背景融合到一起,而上面另外两个窗口则不存在这个问题。

我很想知道这个效果到底是如何实现的?

我有一个不好的实现方法:就是用PS获取CheckBox对应该位置下的TabCtrl的颜色值,用该颜色值构造一个HBRUSH,然后在OnCtlColor函数中return 该 HBRUSH,虽然这样也可以解决这个问题(肉眼几乎看不出差别)但是我觉得这肯定不是通用的解决办法。

希望有这个经验的朋友告之原因,困扰我很久的一个问题。

11 个解决方案

#1


创建一个基于CButton的新类CMyButton,然后在里面重载PreSubClassWindow()和DrawItem(..)这两个函数,然后再添加WM_PAINT这个消息.在OnPaint()函数中绘制Raido或者CheckBox(Raido和CheckBox都是用这种方法)..最后把控件和CMyButton关联起来...

#2


引用 1 楼 allen_lanyuhai 的回复:
创建一个基于CButton的新类CMyButton,然后在里面重载PreSubClassWindow()和DrawItem(..)这两个函数,然后再添加WM_PAINT这个消息.在OnPaint()函数中绘制Raido或者CheckBox(Raido和CheckBox都是用这种方法)..最后把控件和CMyButton关联起来...


这个涉及到控件重绘了,我想把BUTTON控件拖放到窗口上去以后,不为其做变量关联之类的操作,以及重绘之类的操作,我想Windows应该有某种比较简单的机制来实现该透明的效果,难道就只有通过自绘来实现吗?

#3


实现对话框在位图作为背景时的控件透明 .

#4


引用 3 楼 zgl7903 的回复:
实现对话框在位图作为背景时的控件透明 .


这个方法还不错,基本比较折中的解决了这个问题,不过细究的话还是有些小BUG。

可以看见复选框背景下有个虚线框,实际上这个时候的鼠标焦点在编辑框中,为什么没有FOCUS的复选框下还有虚线框,就是因为复选框背景画刷为空,虚线实际上是画到父窗口(也就是对话框)上去了,而且这样点击复选框时会有焦点虚线晃眼的现象,这种问题我以前就碰见过。

因此还是想接着问,有更好的办法么?

#5


Windows桌面属性窗口那个是Property Sheet
Tab Control就像任务管理器那样

#6


刚学VC的时候,我用MFC做过,用的是这种方法:
http://www.vckbase.com/document/viewdoc/?id=398

#7


引用 5 楼 gfm688 的回复:
Windows桌面属性窗口那个是Property Sheet
Tab Control就像任务管理器那样


不是啊,你打开桌面属性窗口,然后用spy++看看,他也是个TABCTRL,里面再套个CDialog类,CDialog类窗口上再放的控件 。

#8


是的,用spy++可以看到Tab Control

MSDN 在Property Sheet的介绍里提到的“日期和时间 属性”对话框,用spy++也看到Tab Control
http://msdn.microsoft.com/en-us/library/bb774538(v=VS.85).aspx

这说明Property Sheet包含了Tab Control

#9


引用 8 楼 gfm688 的回复:
是的,用spy++可以看到Tab Control

MSDN 在Property Sheet的介绍里提到的“日期和时间 属性”对话框,用spy++也看到Tab Control
http://msdn.microsoft.com/en-us/library/bb774538(v=VS.85).aspx

这说明Property Sheet包含了Tab Control


经过测试之后发现你说的这个是对的,就是这种情况,现在我只要研究他的源代码就行了,多谢!等我搞定了来分享经验然后结帖。

#10


引用 8 楼 gfm688 的回复:
是的,用spy++可以看到Tab Control

MSDN 在Property Sheet的介绍里提到的“日期和时间 属性”对话框,用spy++也看到Tab Control
http://msdn.microsoft.com/en-us/library/bb774538(v=VS.85).aspx

这说明Property Sheet包含了Tab Control


我又来问这个问题了,我把http://msdn.microsoft.com/en-us/library/bb774538(v=VS.85).aspx这个地址中的内容详细的看了,用VS2008造了一个CPropertySheet的测试工程想通过查看其源代码的方式来找出它是怎么让控件背景透明的,但是每次跟踪代码最终都到了MFC的Deafult()函数里了,实在找不出来它是如何实现控件背景透明的,请问还能解释一下这个问题吗?

#11


引用 3 楼 zgl7903 的回复:
实现对话框在位图作为背景时的控件透明 .


我想到实现方法了,根据他这个我改编了一下,实现了要求的功能了。

推荐阅读
  • VB.net 进程通信中FindWindow、FindWindowEX、SendMessage函数的理解
    目录一、代码背景二、主要工具三、函数解析1、FindWindow:2、FindWindowEx:3、SendMessage: ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • C#中实现高效UDP数据传输技术
    C#中实现高效UDP数据传输技术 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 优化后的摘要:默认情况下,PopupWindow在点击外部区域时会自动关闭。为了实现点击外部区域时不自动关闭的功能,可以通过自定义设置来调整PopupWindow的行为,确保其在外部点击时仍保持显示状态。这需要对PopupWindow的属性进行适当的修改和配置,以满足特定的交互需求。 ... [详细]
  • 本文详细介绍了 jQuery 的入门知识与实战应用,首先讲解了如何引入 jQuery 库及入口函数的使用方法,为初学者提供了清晰的操作指南。此外,还深入探讨了 jQuery 在实际项目中的多种应用场景,包括 DOM 操作、事件处理和 AJAX 请求等,帮助读者全面掌握 jQuery 的核心功能与技巧。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 深入解析 Android Drawable:第六阶段进阶指南 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 装饰者模式(Decorator):一种灵活的对象结构设计模式
    装饰者模式(Decorator)是一种灵活的对象结构设计模式,旨在为单个对象动态地添加功能,而无需修改原有类的结构。通过封装对象并提供额外的行为,装饰者模式比传统的继承方式更加灵活和可扩展。例如,可以在运行时为特定对象添加边框或滚动条等特性,而不会影响其他对象。这种模式特别适用于需要在不同情况下动态组合功能的场景。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
author-avatar
15-Sports
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有