【求助】控件设置透明后,背景变成黑色了。

等鼠标经过文本框后,背景色成为黑色的了

但是静态文本框就可以。
实在想不出什么方法了,不知道有人遇到过么?
代码也相对简单,就是 OnCtlColor 和 OnEraseBkgnd 这两个函数
#include "stdafx.h"
#include "testbg.h"
#include "Test2.h"
// CTest2 对话框
IMPLEMENT_DYNAMIC(CTest2, CDialog)
CTest2::CTest2(CWnd* pParent /*=NULL*/)
: CDialog(CTest2::IDD, pParent)
{
}
CTest2::~CTest2()
{
}
void CTest2::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CTest2, CDialog)
ON_WM_ERASEBKGND()
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
// CTest2 消息处理程序
BOOL CTest2::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CBitmap m_BkGndBmp;
m_BkGndBmp.LoadBitmap(IDB_BITMAP1);
CRect rcClient;
GetClientRect(&rcClient);
BITMAP bm;
m_BkGndBmp.GetBitmap(&bm);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap *pOldBmp = memDC.SelectObject(&m_BkGndBmp);
pDC->StretchBlt(0,0,rcClient.Width(),rcClient.Height(),&memDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
memDC.SelectObject(pOldBmp);
memDC.DeleteDC();
return TRUE;
}
HBRUSH CTest2::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何属性
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
if(nCtlColor == CTLCOLOR_BTN
|| nCtlColor == CTLCOLOR_STATIC
|| nCtlColor == CTLCOLOR_EDIT)
{
pDC->SetTextColor(RGB(0,255,255));
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
pDC->SetTextColor(RGB(0,0,255));
pDC->SetBkMode(TRANSPARENT);
return hbr;
}
相关推荐
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
在用canvas将png图片转jpeg时,发现透明区域被填充成黑色。 代码如下: XML/HTML Code复制内容到剪贴板 <p>Canvas:</p> <canvas u00a0id=canvas style></canvas> <br> <p>Base64转码后的图片:</p> <div u00a0id=base64Img></div> [removed] var base64Img = document
php缩放gif和png图透明背景变成黑色的解决方法
需要缩放一些gif图然后在去Imagecopymerge,后发现背景图不对,透明的背景图变成了黑色,下面是修改之后的代码
ENVI 5中设置背景值透明显示的方法.pdf
此文档详细描述了在envi5.3软件平台下,对卫星遥感影像存在的黑色背景值(背景值为0),设置成透明显示的方法(去掉黑色背景)。
Android编程实现设置按钮背景透明与半透明及图片背景透明的方法
本文实例讲述了Android编程实现设置按钮背景透明与半透明及图片背景透明的方法。分享给大家供大家参考,具体如下: Button或者ImageButton的背景设为透明或者半透明: 半透明 代码如下:<Button android:background=”#e0000000″ … /> 透明 代码如下:<Button android:background=”#00000000″ … /> 颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0 到 255(00 到 ff)。对于 alpha,00 表示完全透明,ff 表示完全不透明。表达式顺序是“aabbggrr”
解决java压缩图片透明背景变黑色的问题
主要介绍了解决java压缩图片透明背景变黑色的问题,需要的朋友可以参考下


界面

