《MFC 控件透明处理》
MFC对话框添加了背景图后,会导致控件周围有阴影,很不美观,因此,我们需要将阴影进行透明化处理。此时需要使用到MFC中的消息函数OnCtlColor()。
一、添加OnCtlColor()函数
1、对话框,右键选择类向导
2、进入类向导,依次选择“消息”、“WM_CTLCOLOR”、“添加处理程序”、“应用”、“确定”。
3、添加完了消息函数之后,主对话框cpp中会出现OnCtlColor()函数,当你打开对话框时,这个函数就会自动被调用,一般静态控件的背景就会被透明。
HBRUSH CCPP2018Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);//< TODO: 在此更改 DC 的任何特性//< TODO: 如果默认的不是所需画笔,则返回另一个画笔return hbr;
}
或者添加以下代码:
HBRUSH CCPP2018Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);//< TODO: 在此更改 DC 的任何特性if(nCtlColor == CTLCOLOR_STATIC ){pDC->SetBkMode(TRANSPARENT);//<设置背景透明return (HBRUSH)::GetStockObject(NULL_BRUSH);}//< TODO: 如果默认的不是所需画笔,则返回另一个画笔return hbr;
}
二、以上都不能处理单选按钮和复选框的背景,需要添加以下代码
HBRUSH CCPP2018Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);//< TODO: 在此更改 DC 的任何特性UINT id = pWnd->GetDlgCtrlID();if(id == IDC_RADIO_EXPMODE||IDC_RADIO_TRAINMODE||IDC_CHECK_TRACK||IDC_CHECK_SCENE||IDC_EXIT_BUTTON||IDC_MIN_BUTTON){pDC->SetBkMode(TRANSPARENT);CRect rc;pWnd->GetWindowRect(&rc);ScreenToClient(&rc);CDC* dc = GetDC();pDC->BitBlt(0,0,rc.Width(),rc.Height(),dc,rc.left,rc.top,SRCCOPY); //<把父窗口背景图片先画到按钮上ReleaseDC(dc);hbr = (HBRUSH) ::GetStockObject(NULL_BRUSH);} //< TODO: 如果默认的不是所需画笔,则返回另一个画笔return hbr;
}
《MFC 控件透明处理》相关推荐
- ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- 信息学奥赛真题解析(玩具谜题)
玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...
- 信息学奥赛之初赛 第1轮 讲解(01-08课)
信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...
- 信息学奥赛一本通习题答案(五)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通习题答案(三)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通题目代码(非题库)
为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...
- 信息学奥赛一本通(C++版) 刷题 记录
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
最新文章
- Cannot open D:\Program Files\Anaconda3\Scripts\pip-script.py
- 1101 Quick Sort (25 分)【难度: 一般 / 知识点: 快排】
- RobotFramework安装扩展库包autoitlibrary(四)
- 2680 Problem F: Coin Game
- mysql+5.6+左连接_第5章 索引与算法
- linux远程登录模拟输入输出重定向,从零开始学习Linux(三十三):Shell基础之输入输出重定向...
- 莫陷入点击和评论陷阱
- linux文件传输阻塞了,Linux 中的read系统调用到底是阻塞还是非阻
- TracePro v6.02 Win32-ISO 1CD(光学机构仿真软件\
- access mysql并发_多用户同时使用ACCESS
- 【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第四章
- 空间后方交会编程c语言,C语言空间后方交会源代码.doc
- 6款好用的在线思维导图工具推荐
- 第二章 年轻人都是富翁
- 华中农业大学计算机学院院长,魏小梅-华中农业大学-信息学院
- 数据库查询+数据库备份+数据库恢复
- 低功耗读卡(RFID)电路与程序实现
- wxminiapp中NeteaseCloudMusicApi接口服务器的搭建
- 笔记一:Dreamware的页面转格式到Visual Studio
- android one s5,HTC One M9和三星Galaxy S5哪个好
热门文章
- 分枝定界法(Branch-and-Cut)
- 基于软件仿真的PLC系统测试技术
- 深信服虚拟服务器设置ip,深信服服务器虚拟化asv操作步骤.pdf
- 金银猫 服务器维护,金银猫案情进展 投资者可在网上登记报案
- CardView介绍
- 系统服务器软件 服务器操作软件,服务器操作系统和服务器软件
- Android之adb安装apk
- 视音频编解码H264,265,MPEG-4,VP8,VP9知识总结
- 一键进入高通9008模式_高通3040芯片?游戏模式超低延迟?南卡lite pro全新升级!...
- 易语言制作的QQ聊天中常用的GIF图片【带源码下载】