EVC中透明控件的实现

EVC下控件透明(ARMV4I下的工程解决界面美化,非常有用)(本人的宗旨:提供完整的可以运行的源代码) 前段时间从网上下了一个VC下实现控件透明的例子,经常反复修改,调试,终于让它可以在EVC下移植成功了,里面代码照搬就可以解决你在界面美化的难题了 呵呵,希望能解决很多在UI设计这块很多新人的麻烦 (本人的宗旨:提供完整的可以运行的源代码) 立即下载

本文从创建一个工程开始详细说明如何用EVC实现WINCE应用程序下的透明控件(这里实现按钮和STATIC)。
1.     新建一个MFC对话框工程取名TransButton
2.     在ResourceView处插入一背景图片IDB_BITMAP1
3.     在对话框中拉4个控件:两个按钮,两个STATIC
4.     增加TransButtonDlg.h文件中增加如下3个类成员
HBRUSH GetBkBrush( HWND hWnd, UINT nID, HBITMAP hBmBk );
HBITMAP m_hBmBkgnd; // 对话框背景图片
HBRUSH m_hBrCtl[2]; // 控件背景画刷
5.     在TransButtonDlg.cpp中增加GetBkBrush()的实现
HBRUSH CTransButtonDlg::GetBkBrush( HWND hWnd, UINT nID, HBITMAP hBmBk )
{
#define _X(x) (x.left)
#define _Y(x) (x.top)
#define _W(x)     (x.right - x.left)
#define _H(x) (x.bottom - x.top)
HWND hWndCtrl;
hWndCtrl = ::GetDlgItem( hWnd, nID );
HBRUSH hBrushCtrl = NULL;
if( NULL != hWndCtrl )
{
    RECT rcCtrl;
    ::GetWindowRect( hWndCtrl, &rcCtrl );
    ::ScreenToClient(hWnd, (LPPOINT)&rcCtrl);
    ::ScreenToClient(hWnd, ((LPPOINT)&rcCtrl)+1);


    HDC hDC = ::GetDC(hWnd);
    HDC hMemDCBk = CreateCompatibleDC( hDC );
    HDC hMemDCCtrl = CreateCompatibleDC( hDC );


    HBITMAP hBmCtrl = CreateCompatibleBitmap( hDC, _W(rcCtrl), _H(rcCtrl) );
    HBITMAP hBmOldBk;
    HBITMAP hBmOldCtrl;


    hBmOldBk = (HBITMAP) ::SelectObject( hMemDCBk, hBmBk );
    hBmOldCtrl = (HBITMAP) ::SelectObject( hMemDCCtrl, hBmCtrl );


    ::BitBlt( hMemDCCtrl, 0, 0, _W(rcCtrl), _H(rcCtrl), hMemDCBk, _X(rcCtrl), _Y(rcCtrl), SRCCOPY );


    ::SelectObject(hMemDCCtrl, hBmOldCtrl );
    ::SelectObject(hMemDCBk, hBmOldBk );
   
    hBrushCtrl = ::CreatePatternBrush( hBmCtrl );


    DeleteObject( hBmCtrl );


    ::DeleteDC( hMemDCBk );
    ::DeleteDC( hMemDCCtrl );
    ::ReleaseDC( hWnd, hDC );
}


return hBrushCtrl;
}
6.     在OnInitDialog()中增加下面一段截取控件所在部分的图片:
m_hBmBkgnd=::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1) );
if( m_hBmBkgnd )
{
    m_hBrCtl[0]=GetBkBrush(GetSafeHwnd(),IDC_BUTTON_TEST1, m_hBmBkgnd );
    m_hBrCtl[1]=GetBkBrush(GetSafeHwnd(),IDC_STATIC_TEST1,m_hBmBkgnd );
}
7.     增加WM_PAINT的处理函数,并在函数中增加画背景的部分(OnPaint()函数):
CDC memDC;
CBitmap bmBkgnd;
bmBkgnd.Attach( m_hBmBkgnd );


memDC.CreateCompatibleDC(&dc);
CBitmap *pOldBm = memDC.SelectObject( &bmBkgnd );


BITMAP bm;
bmBkgnd.GetObject(sizeof(bm), &bm);



dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY );
memDC.SelectObject( pOldBm );
bmBkgnd.Detach();
8.     增加WM_CTLCOLOR的处理函数,并在其中增加画控件背景的部分:
if(pWnd->GetDlgCtrlID()   ==   IDC_BUTTON_TEST1 )
{
    pDC->SetTextColor(RGB(255, 0, 0));
    pDC->SetBkMode( TRANSPARENT ) ;
    return m_hBrCtl[0];
}
else if(pWnd->GetDlgCtrlID()   ==   IDC_STATIC_TEST1)
{
        pDC->SetTextColor(RGB(255, 0, 0));
    pDC->SetBkMode( TRANSPARENT ) ;
    return m_hBrCtl[1];
}
9.     编译链接
10.   运行后的图片如下:

《实战指南 | MES业务顾问蓝图设计方案:避免90%项目踩坑,从战略到落地的全攻略》 《MES业务顾问蓝图设计方案》干货分享:制造业高管常遇MES系统沦为"摆设"的困境,根源在于蓝图设计阶段未抓准业务痛点。本文系统梳理了6大关键点:1)战略定位上承ERP下接设备;2)通过现场蹲点挖掘真实需求;3)构建可扩展技术架构;4)建立数据闭环管理;5)组织保障分步实施;6)持续量化KPI优化。方案强调从业务价值出发,避免"纸上谈兵",通过数据驱动实现"计划-执行-反馈"闭环,最终让MES成为企业数字化的核心资产。 阅读详情

相关推荐

新手工程师必看:搞定EMI传导干扰,从理解差模和共模开始(附实战案例)

本文深入解析EMI传导干扰中的差模与共模问题,为新手工程师提供从诊断到治理的完整方法论。通过实战案例展示如何通过频谱分析、近场探头扫描等技术精准定位干扰源,并分享PCB布局、滤波器设计等系统级解决方案,帮助工程师高效解决传导干扰问题,提升EMC设计能力。

weixin_26757925的博客 470

在EVC中实现透明控件

在EVC中实现透明控件windows ce 2009-11-04 16:11:13 阅读25 评论0 字号:大中小    之前在用VC6写透明文字的时候没有什么问题的SubclassDlgItem()函数就OK了,但在WINCE的时候发现有问题了,因为它是实现透明了,但他的背景我是我加载图片的背景而是桌面的背景,也就是应用程序后面的背景。经过网上查资料和自己实践确定如下的方法可行。1.

s3c44b0x的专栏 631

Nginx的启动、停止与重启命令(非yum方式安装)图解版

目录一、Nginx启动二、Nginx停止的三种方式2.1、第一种方式(从容停止)2.2、第二种方式(快速停止)2.3、第三种方式(强制停止)三、Nginx重启3.1、首先,验证nginx配置文件是否正确3.1.1、验证nginx配置文件(方法一)3.1.1、验证nginx配置文件(方法二)3.2、最后,重启Nginx服务3.2.1、重启Nginx服务(方法一)3.2.2、重启Nginx服务(方法二) 一、Nginx启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 /usr/loc

小志的博客 6851

EVC下控件透明(ARMV4I下的工程解决界面美化,非常有用)

http://download.youkuaiyun.com/source/373452#aa我提供的代码下载地址。前段时间从网上下了一个VC下实现控件透明的例子,经常反复修改,调试,终于让它可以在EVC下移植成功了呵呵,希望能解决很多在UI设计这块很多新人的 麻烦,界面截图为关于里面的工作原理过段时间一起奉献给大家!

WINC开发的专栏 1884

5V转±12V无变压器双boost电路

最近有个新项目,需要±10V范围的模拟量输出(非隔离),对于5V以下供电的控制板而言单端输出绝对没问题,可现在需要有正负输出,是少不了正负电源的,因此准备设计一个5V转±12V的电源,然后选择一个双向供电的运放,来实现单端模拟量信号向双向模拟量信号转换。 本文就来分享一下5V转±12V电源的设计。对于有类似双向电源需求的场合,大多使用变压器通过增加多个绕组来实现,而对于体积空间有要求的场合来讲,变压器实在是太大了,另外对于一些成熟的项目,变压器如果是已经设计好的,再额外增加绕组需要重新设计,费时费力。于是,

qq_30388337的博客 1万+

YooAsset 学习

YooAssets使用教程

weixin_44884538的博客 1659

在Wince上造背景透明的控件

在Wince上造背景透明的控件   在非纯色背景上,叠加背景透明的BUTTON和STATIC_TEXT控件 收藏 例子:我们要把这个十字准星叠到一个BUTTON控件上,BUTTON位于一个非纯色的背景的窗口上。显示时,紫红色(RGB 0xFF00FF)区域要被挖去,而显示底下的背景。资源图片如下图实现:1、按照以前的经验,如果这个Button由我们自己CreateWindowEx建立起来的话,只要在RegisterClass的WNDCLASS结构体里,把HBRUSH设置成GetStockObject(NUL

fdmbs的专栏 1672

深度强化学习训练结果曲线绘制教程

使用python语言,只调用matplotlib库,绘制训练过程中保存的强化学习训练曲线。模仿经典论文中的训练曲线,多次训练取平均,并绘制出阴影区域。

加斯顿工程师的博客 910

eVC下自绘按钮实现

按钮这个控件在软件中使用是非常广泛的,特别是基于MFC开发,按钮提供了很好的便捷。 但是在eVC下的按钮显示效果是非常土的,且背景颜色不好改。如果裁系统的时候将XP风格裁进去的话,默认按钮效果会好一些,但是背景颜色不好控制,在ce平台下,没有鼠标是很正常的,带XP风格的CE系统按钮提示不够明显,这个时候就需要自绘按钮了。 首先,先建立一个基于CWnd的类,如:CMyButton : publi...

helpbs 125

ABAP Channels 实战:在 ABAP 7.40 中用 WebSocket 打造实时双向通信

本文详细介绍了SAP ABAP 7.40引入的ABAP Channels通信框架,包含AMC(ABAP Messaging Channels)和APC(ABAP Push Channels)两部分。AMC作为应用服务器内部的消息总线,支持发布/订阅模式,可实现跨会话实时通信;APC基于WebSocket协议,用于浏览器等客户端与ABAP服务器的双向实时交互。文章通过一个乒乓球游戏案例展示了ABAP Channels的实时协作能力,并详细解析了AMC的配置方法、消息发送与接收的代码实现,帮助开发者理解如何利用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 220

OpenClaw Manager Pro - 可视化管理工具

OpenClaw Manager Pro 是一个现代化的 Web 管理界面,用于管理多个 OpenClaw Gateway 实例。🎨美观的界面:深色主题,渐变设计,现代化 UI📡实时监控:WebSocket 实时推送状态和日志🔧完整管理:创建、编辑、删除、启动、停止 Gateway📊多渠道支持:飞书、Telegram、Discord、Slack、微信、钉钉🧩技能管理:可视化配置 61+ 个技能🌍跨平台:支持 macOS、Linux、Windows使用自定义模型系统会自动在中创建},

Maynor的博客 3085

EVC下实现WinCE软件换肤之换肤基础类CBitmapSK(转载)

由于在wince下不支持hook,所以对ce下的软件换肤,会很慧心,不过,曾经看到过一个国外的网站上有pocket下实现hook的代码,没读懂,呵呵,自己太水了,这就涉及到另外一个问题了,还没有找到实现hook的方法,所有要另外想办法了,所以不管怎么样都要重写控件,参考了一些VC实现的换肤,在此实现了基本类CBitmapSK。其中有个郁闷的地方是evc对CRgn支持的不全面,对任意形状的...

aotingyou8613的博客 140

Python爬虫实战:爬取国家企业信用信息公示系统(最新反反爬技术解析)

在当今大数据时代,企业信用数据对于市场分析、风险评估和商业决策具有重要价值。国家企业信用信息公示系统作为官方权威的企业信息平台,包含了全国各类企业的注册信息、行政处罚、经营异常等关键数据。复杂的反爬机制(动态Token、验证码、请求频率限制)数据渲染方式多样(部分内容由JavaScript动态加载)法律与合规风险(需遵守《网络安全法》和网站Robots协议)本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的企业信用信息爬虫,并重点解析应对各种反爬策略的解决方案。

2201_76125261的博客 2695

在非纯色背景上,叠加背景透明的BUTTON和STATIC_TEXT控件

例子:我们要把这个十字准星叠到一个BUTTON控件上,BUTTON位于一个非纯色的背景的窗口上。显示时,紫红色(RGB 0xFF00FF)区域要被挖去,而显示底下的背景。资源图片如下图实现:1、按照以前的经验,如果这个Button由我们自己CreateWindowEx建立起来的话,只要在RegisterClass的WNDCLASS结构体里,把HBRUSH设置成GetStockObjec

905

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

EVC实现带文字显示的进度条

1.创建基于CProgressCtrl的类CTextProgress2.向CTextProgress类中添加私有成员变量 COLORREF m_crText; //文本颜色 COLORREF m_crProgress; //进度颜色 COLORREF m_crBlank; //空白区域颜色 COLORREF m_clOrg; //渐变起点颜色 COLORREF m_cl

yearafteryear的专栏 1859

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC,EVC视频上显示文字的方法

我要在wince5.0上全屏显示视频,并在视频上显示按钮和文本。 通过网络得到了各种方法,总结一下: 基于的是对话框,视频显示在对话框的DC上:生成一个兼容的mem DC,然后,生成一个位图bmp,将mem DC和bmp关联,摄像头数据刷到bmp上,然后用Bitblt从Mem DC上传到DC上。 文字的显示方法: 1.直接在对话框DC上输出文字,Textout或Drawtext(wince...

runfeel 156

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WinCE工控类控件之立体Bar柱形

说明:本网站所有代码提供源代码(.h,.cpp文件),而非DLL或组件形式。 下载演示程序 下载相关DLL(如果缺少DLL组件,请下载这个) 开发环境:Windows XP+SP2 Visual C++6.0 + SP6 Visual C++ 2003/2005 EVC4.0 + SP4 运行平台:Windows95 /98/ 2000 / XP /Vista...

weixin_34306446的博客 120

VC,EVC视频上显示文字的方法 双缓冲

我要在wince5.0上全屏显示视频,并在视频上显示按钮和文本。 通过网络得到了各种方法,总结一下: 基于的是对话框,视频显示在对话框的DC上:生成一个兼容的mem DC,然后,生成一个位图bmp,将mem DC和bmp关联,摄像头数据刷到bmp上,然后用Bitblt从Mem DC上传到DC上。貌似这就是传说中的双缓冲!~~~ 文字的显示方法: 1.直接在对话框DC上输出文字,Text

yanhc519的专栏 2683

WinCE-多功能控件之无闪烁时间显示

说明:本网站所有 代码提供源代码(.h,.cpp文件),而非 DLL或组件形式。 下载演示程序 下载相关DLL(如果缺少DLL组件,请下载这个) 开发环境:Windows XP+SP2 Visual C++6.0 + SP6 Visual C++ 2003/2005 EVC4.0 + SP4 运行平台:Windows95 /98/ 2000 / XP /V...

weixin_34246551的博客 175

CButton使用详解

//========================================================================//TITLE:// CButton使用详解//AUTHOR:// norains//DATE:// Saturday 16-May-2007//Environment:// EVC4.0 + Standard SDK...

weixin_30902251的博客 174
上一篇: Visual C++中使用gotoxy() / clrscr()等函数(转)
下一篇: Debian5.0下BOOTSPLASH配置过程
sunwill_chen
博客等级 码龄19年 25粉丝 39原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值