社区
界面
帖子详情
如何设置EditCtrl的透明??
alphagx
2003-11-27 11:05:55
我的对话框上放了一张图片,
然后我重载了CEdit,
并在CMyEdit的
OnCtrlColor中进行了如下的处理:
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH) GetStockObject(NULL_BRUSH);
但是主窗口上显示的文本框并没有透明。
即没有看到背景图片。
我的Edit是Read only属性的,难道用这种方法不行吗?
开发环境是vc 6.0 sp5。
...全文
110
9
打赏
收藏
如何设置EditCtrl的透明??
我的对话框上放了一张图片, 然后我重载了CEdit, 并在CMyEdit的 OnCtrlColor中进行了如下的处理: pDC->SetBkMode(TRANSPARENT); return (HBRUSH) GetStockObject(NULL_BRUSH); 但是主窗口上显示的文本框并没有透明。 即没有看到背景图片。 我的Edit是Read only属性的,难道用这种方法不行吗? 开发环境是vc 6.0 sp5。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
alphagx
2003-11-28
打赏
举报
回复
TO: flyelf(空谷清音)
你能给我发一个demo吗?
Email:
gx_sz@163.com
flyelf
2003-11-28
打赏
举报
回复
.net不太清楚,不过在我的程序中可以实现透明效果
alphagx
2003-11-28
打赏
举报
回复
huanyun(无妻徒刑) ( )
说的是哪一篇文章?
其他几种方法都不行。
朋友用vc.net实现了一下,能实现要求。
zhucde
2003-11-28
打赏
举报
回复
可以的,我试过了,用如下代码看看:
添加对话框背景图片:
先在类中定义:
CBrush m_brBk;
初始化:(OnInitDialog)
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
m_brBk.CreatePatternBrush(&bmp);
bmp.DeleteObject();
重载WM_CTRLCOLOR
HBRUSH CMyView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CRecordView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
int nID = pWnd->GetDlgCtrlID();
if( (nID == IDC_EDIT1))//你的文本框的ID
{
pDC->SetTextColor(RGB(140,0,0));
pDC->SetBkMode(TRANSPARENT);//透明
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
if (pWnd == this)
{
return m_brBk;//设置背景图片
}
return hbr;
}
我试过了,是可以实现文本框的透明的,可以看到背景图片.
-------------
May You Secceed!
----------------------
sinhighly
2003-11-28
打赏
举报
回复
应该是重载ON_WM_CTLCOLOR_REFLECT消息
HBRUSH CTransParentEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
//set background transparent
pDC->SetBkMode(TRANSPARENT);
//return NULL brush
// return((HBRUSH)GetStockObject(NULL_BRUSH));
}
然后还要处理用户编辑选中等操作自己刷新窗口
flyelf
2003-11-28
打赏
举报
回复
void CMyEdit::UpdateCtrl()
{
CWnd* pParent = GetParent();
CRect rect;
GetWindowRect(rect);
pParent->ScreenToClient(rect);
pParent->InvalidateRect(rect, TRUE);
}
然后添加WM_WINDOWPOSCHANGING,WM_WINDOWPOSCHANGED,WM_KILLFOCUS,WM_LBUTTONDOWN,WM_LBUTTONDBLCLK等消息,在响应函数中添加代码UpdateCtrl();
alphagx
2003-11-28
打赏
举报
回复
解决问题了
只需要将Edit控件的属性更改成
MultiLine ,上面的方法就都可以了。
否则,当然文本所在的这一行的背景颜色将不会透明。
谢谢大家
flyelf
2003-11-28
打赏
举报
回复
已发送
huanyun
2003-11-27
打赏
举报
回复
http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=311
需要自己维护WM_PAINT
edit
ctrl
_C
EDit
_transportationzvv_Vc_
4. **
透明
处理**:为了让文字在位图上清晰可见,可能需要
设置
位图的
透明
色或使用Alpha通道处理,使得文字可以正常显示在背景上。这可能涉及对位图的像素操作,或者使用GDI+的Alpha混合功能。 5. **内存DC**:为了...
MFC中各种控件
透明
的实现方法总结
http://www.codeguru.com/cpp/controls/
edit
ctrl
/transparent/article.php/c3921/ 这篇文章虽然是想实现
透明
的,但我觉得他的
透明
效果实现的并不理想。但对于背景位图的实现很有启发。 下载了源码,发现他并...
窗口、CList
Ctrl
控件、
Edit
控件
设置
背景图片
如下图所示: 首先要导入bmp格式的背景图片: 1、窗口绘制背景图: BOOL C账号管理器Dlg::OnEraseBkgnd(CDC* pDC) { CDC MemDC; MemDC.CreateCompatibleDC(pDC); CBitmap Cbp; Cbp.LoadBitmap(IDB_...
MFC编辑框改变背景、颜色
//
设置
背景
透明
hbr = (HBRUSH)m_brush; } return hbr; } 对于nCtlColor的类型,如下: CTLCOLOR_BTN Button control CTLCOLOR_DLG Dialog box CTLCOLOR_
EDIT
Edit
control CTLCOLOR_LISTBOX ...
详细介绍SetFocus()
功能:将输入焦点
设置
到调用该函数的窗口或控件。 返回值: TRUE:焦点
设置
成功。 FALSE:失败(如控件不可见、被禁用或焦点已被其他窗口抢占)。 二、核心用途 键盘输入定向 获得...
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章