社区
界面
帖子详情
如何设置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。
...全文
107
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_
提供一个C
EDIT
类实现背景位图源码,并且可以更换背景。
MFC中各种控件
透明
的实现方法总结
Button: 资料来源: http://www.cnblogs.com/songsu/articles/1370665.html 关键是其中的OnEraseBkgnd。OnDrawItem只是在原来BUTTON的位置上画了一个椭圆显示BUTTON的位置。 /* * 画项 */ void CImageButton::OnDrawItem(int nIDCtl, LPDRAW
窗口、CList
Ctrl
控件、
Edit
控件
设置
背景图片
如下图所示: 首先要导入bmp格式的背景图片: 1、窗口绘制背景图: BOOL C账号管理器Dlg::OnEraseBkgnd(CDC* pDC) { CDC MemDC; MemDC.CreateCompatibleDC(pDC); CBitmap Cbp; Cbp.LoadBitmap(IDB_FILEMGR); MemDC.SelectObject(&Cbp);
MFC编辑框改变背景、颜色
VC 编辑框 改变背景、字体、文本颜色、长度限制、英文 汉字判断 1、长度限制 OnInitDialog()中: m_
edit
1.SetLimitText(8); //m_
edit
1为编辑框的成员变量 或者 C
Edit
*pEdt=(C
Edit
*)GetDlgItem(IDC_
EDIT
1); pEdt->SetLimitText(8); //限制编辑框输入长度为8字节 2、汉字判断
详细介绍SetFocus()
书籍:《Visual C++ 2017从入门到精通》的4.2 按钮控件环境:visual studio 2022内容:[例 4.2]制作图片按钮说明:以上内容大部分来自腾讯元宝。在MFC(Microsoft Foundation Classes)中,SetFocus()是一个用于控制用户输入焦点的关键函数。
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章