创建透明CEdit控件
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控件的更多相关文章
- 创建 WPF 工具箱控件
创建 WPF 工具箱控件 WPF (Windows Presentation Framework) 工具箱控件模板允许您创建 WPF 控件,会自动添加到 工具箱 安装扩展的安装. 本主题演示如何使用模 ...
- 通过WinForm控件创建的WPF控件无法输入的问题
今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在我的机器上却是好好的. 最开始以为是输入法的问题,弄了好一阵子 ...
- android学习七(创建自己定义控件)
前面学习的是android的基本控件和布局的使用,可是主要的控件和布局有时候并不能实现复杂的布局.我们来看下各种控件和布局的关系. 可见全部的控件都是直接或者间接的继承自View的,全部的布局都是直接 ...
- 关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false
关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false 我们在 Unity 中通过 UI 菜单创建的各种控件,比如 Text, Image 等, ...
- React 创建自己定义控件
React是Facebook的内部项目,当时facebook对自己市面上全部的javascript MVC都不惬意,于是就自己创建了一个新的框架.发现还挺好用.于是就开源了,这就是React. Rea ...
- 用swift创建各种UI控件【iSwifting社区】
为了方便大家学习,www.iSwifting.com社区为大家准备了创建各种UI控件的代码.開始看着语法可能有些别扭,当用习惯了,就认为还是非常不错的. 社区还添加了问答专区.有问题的朋友.虽然问.大 ...
- IOS入门之创建视图和控件绑定
学习IOS几天了,跟着教程做了两个小应用了,现在先来总结一下.今天就是创建视图和绑带到代码了.其实就是常见的MVC模式实现. 使用的Xcode版本是8.2. 在Xcode创建项目之后,默认就会创建一个 ...
- WPF 中动态创建和删除控件
原文:WPF 中动态创建和删除控件 动态创建控件 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindName(" ...
- 【WPF学习】第六十五章 创建无外观控件
用户控件的目标是提供增补控件模板的设计表面,提供一种定义控件的快速方法,代价是失去了将来的灵活性.如果喜欢用户控件的功能,但需要修改使其可视化外观,使用这种方法就有问题了.例如,设想希望使用相同的颜色 ...
随机推荐
- Objective-C Runtime 运行时之三:方法与消息(转载)
前面我们讨论了Runtime中对类和对象的处理,及对成员变量与属性的处理.这一章,我们就要开始讨论Runtime中最有意思的一部分:消息处理机制.我们将详细讨论消息的发送及消息的转发.不过在讨论消息之 ...
- CodeForces 707D Persistent Bookcase
$dfs$,优化. $return$操作说明该操作完成之后的状态和经过操作$k$之后的状态是一样的.因此我们可以建树,然后从根节点开始$dfs$一次(回溯的时候复原一下状态)就可以算出所有状态的答案. ...
- Apache 2.4.16、PHP5.6.11安装教程
以前我写过Apache2.4和php5.5的安装教程,但是后来我自己跟着自己写的东西做时发现有很多问题,这里把这些问题重新修正,再写一个教程,供大家参考. 注意:WinXP系统请选择旧版本Apache ...
- git出错
查询git的版本是否装对 32 位 64位
- kindeditor编辑器上传图片失败 错误 405.0解决办法(亲测)
HTTP 错误 405.0 - Method Not Allowed(省略)editor/php/upload_json.php?dir=image物理路径 http://www.gdgoga.com ...
- linux系统被入侵后处理经历【转】
背景 操作系统:Ubuntu12.04_x64 运行业务:公司业务系统,爬虫程序,数据队列. 服务器托管在外地机房. 突然,频繁收到一组服务器ping监控不可达邮件,赶紧登陆zabbix监控系统查看流 ...
- android教学大纲
android班 教学大纲 个小时 次课:Android开发环境搭建及工具介绍 Android系统简介 Android开发环境简介及搭建 AndroidStudio提供的工具组件 次课:第一个Andr ...
- maven中添加proguard来混淆代码
只要下回插件并添加相应的配置文件即可.本文仅是做下相关记录 1.修改pom.xml添加插件 <plugin> <groupId>com.pyx4me</groupId&g ...
- postgreSQL-如何查数据库表、字段以及字段类型、注释等信息?
之前从网上也搜索了一些关于postgreSQL的系统表含义以及如何查表相关信息,但是都没有一个完整的内容,所以自己将找到的一些内容作了下整合,大家可以根据自己需要再对sql进行调整. --1.查询对象 ...
- rsync 断点续传
# rsync -avzP file root@172.20.7.219:/root/tmp (我这里file指要传送的文件)