我在OnPaint中已经成功在按钮上贴图,但是编辑区域的图却被贴在了原来的白色背景下,就是被盖住了,已经用SetBkMode设置了背景透明,但是没有效果,请大侠帮忙,下面是部分代码
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRect m_Rect;
GetClientRect(&m_Rect); BITMAP bm_1;
m_Bkimage.GetBitmap(&bm_1);
m_pBkbmCurrent = &m_Bkimage;
CDC dcMem_1;
dcMem_1.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap_1 = dcMem_1.SelectObject(m_pBkbmCurrent);
dc.BitBlt(1,1,bm_1.bmWidth,bm_1.bmHeight,&dcMem_1,0,0,SRCCOPY);
dc.SetTextColor(RGB(128,0,0)); dc.SetBkMode(TRANSPARENT); 小弟着急啊~!
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRect m_Rect;
GetClientRect(&m_Rect); BITMAP bm_1;
m_Bkimage.GetBitmap(&bm_1);
m_pBkbmCurrent = &m_Bkimage;
CDC dcMem_1;
dcMem_1.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap_1 = dcMem_1.SelectObject(m_pBkbmCurrent);
dc.BitBlt(1,1,bm_1.bmWidth,bm_1.bmHeight,&dcMem_1,0,0,SRCCOPY);
dc.SetTextColor(RGB(128,0,0)); dc.SetBkMode(TRANSPARENT); 小弟着急啊~!
{
HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
//一个COMBO有两层窗口,先将外边的窗口透明
if(pWnd ->GetDlgCtrlID() == IDC_YOURCOMBO)
{
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
pDC ->SetBkMode(TRANSPARENT);
}
//再将里面的透明
pWnd = pWnd ->GetParent();
if(pWnd)
{
if(pWnd ->GetDlgCtrlID() == IDC_YOURCOMBO)
{
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
pDC ->SetBkMode(TRANSPARENT);
}
}
return hbr;
} http://topic.csdn.net/t/20030306/16/1499687.html
你这段代码是什么类的?对话框的吗?combobox控件在该对话框上?
只需要在对话框中重载OnCtlColor函数就可以了。
使用2楼的代码
另外我现在派生combobox类是为了代码复用,现在公司产品在做美工方面的工作,很多产品中都会使用这个类,目的是在其他产品中直接声明这个类的对象就能实现效果