社区
界面
帖子详情
求助,不寻常的透明按钮,有难度!
laserman
2005-03-16 11:29:53
MFC自带的按钮是不能实现透明功能的,要实现透明,通常的解决方法是派生一个自绘按钮,在按钮中保存和背景一样的图片,按钮每次刷新的时候将图片作为背景,这样看上去的效果和透明是一样的,但这种方法只能实现静态背景图片,如果背景图片是gif之类的动态图片,显示上就会出问题。我的想法是做一个真正意义上的透明按钮,这样在后台背景变化的时候也不会有问题,请问如何实现?
...全文
1070
28
打赏
收藏
求助,不寻常的透明按钮,有难度!
MFC自带的按钮是不能实现透明功能的,要实现透明,通常的解决方法是派生一个自绘按钮,在按钮中保存和背景一样的图片,按钮每次刷新的时候将图片作为背景,这样看上去的效果和透明是一样的,但这种方法只能实现静态背景图片,如果背景图片是gif之类的动态图片,显示上就会出问题。我的想法是做一个真正意义上的透明按钮,这样在后台背景变化的时候也不会有问题,请问如何实现?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
菜牛
2005-03-17
打赏
举报
回复
派生CButton,在OnEraseBkgnd()中return TRUE;在DrawItem()中绘图,确实是完全透明的,但是动态还不行。
laserman
2005-03-17
打赏
举报
回复
谢谢ipgk(loboho),
不过静态的可以,动态的还是不行,不知道还有什么方法没有。
难道只有设置按钮的区域吗?那可太麻烦了。
jerry
2005-03-17
打赏
举报
回复
设置按钮的区域. 让按钮只包含那些需显示的区域,
hushuangyan74
2005-03-17
打赏
举报
回复
大家讨论这么激烈,我就不说了。。。。
laserman
2005-03-16
打赏
举报
回复
这样不行.
其实我的意思就是做一个按钮,给按钮设定图标后,按钮的样子看上去就和图标一样,图标以外的范围显示的就是父窗口的背景,也不显示长方形的边框,但实际上还是能响应按钮消息.
效果就和将WEB页面设为桌面背景后,快捷方式"我的电脑"的效果差不多.
我想应该是按钮控件,不知道有没有什么别的方法.
老夏Max
2005-03-16
打赏
举报
回复
这个确实比较困难!动画的一直没有解决!当初有一个滚动字幕的透明和你这个问题一样,到现在还没有解决。关注!
ipgk
2005-03-16
打赏
举报
回复
你重载OnEraseBkgnd,直接return TURE。
不知你为什么要让按钮透明,这样不是很难看?你要透明还是半透明?
laserman
2005-03-16
打赏
举报
回复
请问如何实现?我派生的按钮默认都有小方框的,无法融入到背景中
ipgk
2005-03-16
打赏
举报
回复
你派生的按钮就可以实现透明,不用保存背景再画。
菜牛
2005-03-16
打赏
举报
回复
ipgk(loboho):
他这个按钮已经是继承类的了,就不需要SubclassWindow()了。
ipgk
2005-03-16
打赏
举报
回复
测试过,不一定要Create后再subclasswindow,只要Create时指定owndraw就可以,我说错了。不过透明是可以实现的。例子发了给你。
laserman
2005-03-16
打赏
举报
回复
楼上的,有例子吗?请发给我,laserman_x@yahoo.com.cn,谢谢。
ipgk
2005-03-16
打赏
举报
回复
凡是用这种方法创建的按钮都有背景
___________________
你这么肯定,我也没意见。反正动态创建的按钮我也是做过的,透明也是可以实现的,也许你的意思我真的不明白吧。不过我要说,只是m_testBtn.Create(。。是肯定不行的,一定要Create后再subclasswindow到m_testBtn。
laserman
2005-03-16
打赏
举报
回复
自定义一个按钮类,使用SetLayeredWindowAttributes会不会把在上面画的图案也变得透明?
我的想法是背景完全透明,按钮上的图标,文字完全不透明,这样行吗?
王晓华-吹泡泡的小猫
2005-03-16
打赏
举报
回复
WS_EX_LAYERED
Windows 2000 or later: Creates a layered window. Note that this cannot be used for child windows. Also, this cannot be used if the window has a class style of either CS_OWNDC or CS_CLASSDC.
按钮一般都是子窗口
I_Love_CPP
2005-03-16
打赏
举报
回复
这样的按钮就是真正意义上的透明按钮!
I_Love_CPP
2005-03-16
打赏
举报
回复
回复人: I_Love_CPP(我愛C++) ( ) 信誉:141 2005-03-16 13:52:00 得分: 0
既然透明/半透明的窗口都能实现,按钮当然也能实现透明/半透明。
自定义一个按钮类,使用
SetLayeredWindowAttributes
laserman
2005-03-16
打赏
举报
回复
执行上是没有问题的,可能我的表达不够清楚。
凡是用这种方法创建的按钮都有背景,通常将按钮的背景设成和按钮parent背景上同样位置的内容,这样看上去的效果就是一个透明按钮,这样的情况对于parent背景不变是没有问题的,但是如果parent背景是gif运动图片或者avi电影的运动画面,一眼就能看出毛病.
我就是想解决这个问题,达到真正意义上的透明按钮.
laserman
2005-03-16
打赏
举报
回复
// MyVCTestDlg.h : 头文件
//原有的东西忽略
// CMyVCTestDlg 对话框
class CMyVCTestDlg : public CDialog
{
//原有的东西忽略
public:
//CExplorer1为微软COM组件,名称为Microsoft Web浏览器,类是自动生成的
//界面上放了一个这样的控件
CExplorer1 m_IE;
//m_testBtn为自定义按钮,定义为变量
CMyTestButton m_testBtn;
}
// MyVCTestDlg.cpp : 实现文件
//原有东西忽略
void CMyVCTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//DDX控件绑定,m_IE在界面上放置了控件
DDX_Control(pDX, IDC_EXPLORER1, m_IE);
}
// CMyVCTestDlg 消息处理程序
//初始化对话框
BOOL CMyVCTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
//上边的东西都是自动生成的,下面的为添加的
//调用Create创建按钮并显示,
m_testBtn.Create("DDDD", WS_CHILD|WS_VISIBLE, CRect(0,0,100,100), &m_IE, 201);
//IE窗口转到csdn,作为背景
COleVariant mmm;
m_IE.Navigate("www.csdn.net", &mmm, &mmm, &mmm, &mmm);
//修改完毕
return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
}
//这下应该不会引起歧义了
//为什么m_testBtn不用DDX_Control的原因是我不知道如何将m_testBtn的parent设为m_IE
//很长时间没用VC了,记忆难免有错,请各位多多指教,3ks
ipgk
2005-03-16
打赏
举报
回复
那就Create后再SubclassWindow,你在PreSubclassWindow下个断点,看有没执行到?
加载更多回复(8)
哲理故事300篇 下
哲理故事300篇 下
各路大牛的C语言编程建议和技巧!
我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以来这些基于许多经验的观点一直积累在我的头脑中。因此希望这些观点能帮助你们,了解如何规划一个程序的细节。(我还没有看到过一篇讲关于如何规划整个事情的好文章,不过这部分可以是课程的一部分)要是能发现它们的特质,那很好;要是不认...
大牛们的C语言编程建议和技巧!
点击上方“大鱼机器人”,选择“置顶/星标公众号”福利干货,第一时间送达!我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随...
TowardsDataScience 博客中文翻译 2022(三百七十一)
数据可视化是数据科学的一个重要方面,它使从业者能够获得手边数据的图形表示,检测异常,或识别模式和趋势。虽然有多种方法来执行图形数据分析,但散点图是一种广为人知且经常使用的工具,用于可视化变量之间的关系。虽然散点图通常只显示二维,但无需在空间上正交相加,就可以显示更多的维度。这可以通过利用颜色、形状、大小或不
透明
度等视觉属性来实现。我们将在本文中探讨这些属性的使用。在深入研究之前,值得注意的是,向图中添加第三个正交维度当然也是可能的。然而,这种做法通常应该避免,除非存在与情节交互的可能性。
情商的研究
情商EQ认识与提高 情商 (情绪、意志、性格、行为习惯组成的商数) 情商(Emotional Quotient)通常是指情绪商数,简称EQ,主要是指人在情绪、意志、耐受挫折等方面的品质,其包括导商(LQ)等。总的来讲,人与人之间的情商并无明显的先天差别,更多与后天的培养息息相关。它是近年来心理学家们提出的与智商相对应的概念。从最简单的层次上下定义,提高情商是把不能控制情绪的部分变为可以...
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章