如何设置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。

...全文
108 9 打赏 收藏 转发到动态 举报
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

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧