1.在资源编辑器中将Edit控件的Border设为none(当然也可以在代码中修改窗口样式)

2.在重载CEdit的类中响应MSG_OCM_CTLCOLOREDIT消息,在处理函数中将背景模式设为透明,否则无法显示背景画刷填充效果

3.从父窗口截取控件对应位置的图片,以此图片创建画刷作为控件的背景画刷返回

4.在Edit的EN_CHANGE处理中调用Invalidate(),否则由于第一步的操作,会导致文本重叠

相关代码如下

// ACEdit.h

#pragma once

#include "ACListWnd.h"

class CACEdit : public CWindowImpl<CACEdit, CEdit> {
public:
CACEdit();
virtual ~CACEdit(); protected:
BEGIN_MSG_MAP_EX(CACEdit)
REFLECTED_COMMAND_CODE_HANDLER(EN_CHANGE, OnChange)
MSG_OCM_CTLCOLOREDIT(OnCtlColorEdit)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP() LRESULT OnChange(UINT wNotifyCode, UINT wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCtlColorEdit(HDC hDC, HWND hWnd); private:
CDC m_dcBk;
CBitmap m_bmpBk;
CBrush* m_pbkBrush;
};
// ACEdit.cpp

#include "stdafx.h"
#include "ACEdit.h" CACEdit::CACEdit() {
m_pbkBrush = NULL;
} CACEdit::~CACEdit() {
} LRESULT CACEdit::OnChange(UINT wNotifyCode, UINT wID, HWND hWndCtl, BOOL& bHandled) {
Invalidate();
return ;
} LRESULT CACEdit::OnCtlColorEdit(HDC hDC, HWND hWnd) {
SetBkMode(hDC, TRANSPARENT);
if(NULL == m_pbkBrush) {
CRect rect;
GetClientRect(rect);
CRect rect1;
CClientDC clDC(GetParent());
GetWindowRect(rect1);
GetParent().ScreenToClient(rect1);
m_dcBk.CreateCompatibleDC(clDC); m_backBmp.CreateCompatibleBitmap(clDC, rect.Width(), rect.Height());
m_dcBk.SelectBitmap(m_backBmp);
m_dcBk.BitBlt(,,rect.Width(),rect.Height(),clDC,rect1.left,rect1.top,SRCCOPY);
m_pbkBrush = new CBrush(CreatePatternBrush((HBITMAP)m_backBmp));
}
return (LRESULT)(m_pbkBrush->m_hBrush);
}

贴张效果图

创建透明CEdit控件的更多相关文章

  1. 创建 WPF 工具箱控件

    创建 WPF 工具箱控件 WPF (Windows Presentation Framework) 工具箱控件模板允许您创建 WPF 控件,会自动添加到 工具箱 安装扩展的安装. 本主题演示如何使用模 ...

  2. 通过WinForm控件创建的WPF控件无法输入的问题

    今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在我的机器上却是好好的. 最开始以为是输入法的问题,弄了好一阵子 ...

  3. android学习七(创建自己定义控件)

    前面学习的是android的基本控件和布局的使用,可是主要的控件和布局有时候并不能实现复杂的布局.我们来看下各种控件和布局的关系. 可见全部的控件都是直接或者间接的继承自View的,全部的布局都是直接 ...

  4. 关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false

    关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false 我们在 Unity 中通过 UI 菜单创建的各种控件,比如 Text, Image 等, ...

  5. React 创建自己定义控件

    React是Facebook的内部项目,当时facebook对自己市面上全部的javascript MVC都不惬意,于是就自己创建了一个新的框架.发现还挺好用.于是就开源了,这就是React. Rea ...

  6. 用swift创建各种UI控件【iSwifting社区】

    为了方便大家学习,www.iSwifting.com社区为大家准备了创建各种UI控件的代码.開始看着语法可能有些别扭,当用习惯了,就认为还是非常不错的. 社区还添加了问答专区.有问题的朋友.虽然问.大 ...

  7. IOS入门之创建视图和控件绑定

    学习IOS几天了,跟着教程做了两个小应用了,现在先来总结一下.今天就是创建视图和绑带到代码了.其实就是常见的MVC模式实现. 使用的Xcode版本是8.2. 在Xcode创建项目之后,默认就会创建一个 ...

  8. WPF 中动态创建和删除控件

    原文:WPF 中动态创建和删除控件 动态创建控件 1.容器控件.RegisterName("Name",要注册的控件)   //注册控件 2.容器控件.FindName(" ...

  9. 【WPF学习】第六十五章 创建无外观控件

    用户控件的目标是提供增补控件模板的设计表面,提供一种定义控件的快速方法,代价是失去了将来的灵活性.如果喜欢用户控件的功能,但需要修改使其可视化外观,使用这种方法就有问题了.例如,设想希望使用相同的颜色 ...

随机推荐

  1. quagga源码分析--通用库thread

    quagga是开源路由器软件,提供的用户界面与思科,华为的路由器的人机接口几乎一致,非常有学习价值,尤其是开源的协议代码,简直亮瞎了我的小眼睛. quagga的介绍,我就不赘述了,有兴趣的可以找度娘或 ...

  2. 基于 Consul 的 Docker Swarm 服务发现

    Docker 是一种新型的虚拟化技术,它的目标在于实现轻量级操作系统的虚拟化.相比传统的虚拟化方案,Docker 虚拟化技术有一些很明显的优势:启动容器的速度明显快于传统虚拟化技术,同时创建一台虚拟机 ...

  3. VIP站长大会(北京站)常见问题解答

    功能支持问题 1. react能否和MIP结合使用,如果暂时不能以后是否有考虑?是否会和其他 js 框架(比如angular )结合? 目前暂无计划支持. 2. MIP页是否支持自定义cookie?实 ...

  4. AC自动机(AC automation)

    字典树+KMP 参考自: http://www.cppblog.com/mythit/archive/2009/04/21/80633.html ; //字典大小 //定义结点 struct node ...

  5. 洛谷-统计数字-NOIP2007提高组复赛

    题目描述 Description 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照 ...

  6. Jquery实现双击表单元格可编辑

    <script type="text/javascript"> function doTableTdEditClick(param){ doTdEditable(par ...

  7. Remote小Demo

    Demo基于http://www.cnblogs.com/zhili/p/NETRemoting.html RemotingObj using System; using System.Collect ...

  8. 汉字转全拼音函数优化方案(SQLServer),值得你看看

    函数要求实现功能 select 函数名 ('你好,我是追索') 返回的结果(ni hao , wo shi zhui suo) 解决方案一: 解决方案一 /* 根据汉字获取全拼 1.生成所有读音临时表 ...

  9. SQLServer中的变量:局部变量,全局变量

    SQLServer中的全局变量   变量 Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量.局部变量 局部变量是一个能够拥有特定数据类型的对象 ...

  10. 学习【Web前端开发修炼之道】总结

    网页布局 1.申明文档模式 2.设置css标签重置,避免各浏览器解析不同. 3.网页css模块划分,base.css,common.css,page.css 4.低权重原则---避免滥用子选择器 cs ...