改变对话框背景后得问题

zhangshengyu 2006-06-15 04:23:24
有一些控件在对话框改变背景后,自己得背景特别难看,怎么把他自己得背景弄成透明的?
比如 STATIC CHECKBOX GOURPBOX etc.
...全文
303 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzjking 2006-07-07
  • 打赏
  • 举报
回复
void CTestDlg::OnPaint()
{
CRect r;
GetClientRect(&r);


CPaintDC dc(this);
CRect rect=CRect(0,0,r.Width()*0.2,r.Height()*0.3);
//GetClientRect(&rect);//µÃµ½´°ÌåµÄ´óС
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP2);//¼ÓÔر³¾°Í¼Æ¬
BITMAP bitMap;
bmpBackground.GetBitmap(&bitMap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
}

livedeal 2006-07-07
  • 打赏
  • 举报
回复
留底~
zhangshengyu 2006-07-06
  • 打赏
  • 举报
回复
不用自绘,也不能自绘,关键是如何把背景的画刷弄成透明的。
psbeond 2006-07-06
  • 打赏
  • 举报
回复
大家说的都不会,要自绘的。每一个控件自绘的方法不一样。
zhangshengyu 2006-07-06
  • 打赏
  • 举报
回复
用loomman说的 还是黑的
而hopewzy1982 说的只能在某些情况下用。
我是改变了背景,不是颜色,也就是说对话框背景不是一个颜色,而是渐变的。
南安风语者 2006-06-28
  • 打赏
  • 举报
回复
楼上的说的对,在OnCtlColor中用SetBkMode,不过SetTextColor是设置字体的颜色,想设置控件颜色的话可以如下

HBRUSH CControlTestDlg::OnCtlColor( CDC* pDC, CWnd* pWnd,UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor( pDC, pWnd, nCtlColor);

hbr = CreateSolidBrush( RGB( 0,0,255));

switch( nCtlColor) {
case CTLCOLOR_STATIC:
pDC->SetBkMode( TRANSPARENT);
hbr = CreateSolidBrush( RGB( 255,255,0));
break;
default:
break;
}

return hbr;
}
一剑 2006-06-27
  • 打赏
  • 举报
回复
CBrush m_HollowBrush;
CBrush m_WhiteBrush;

在OnInitDialog()中:
m_HollowBrush.CreateStockObject(HOLLOW_BRUSH);//创建一个无效的刷子
m_WhiteBrush.CreateSolidBrush(RGB(225,225,225));//创建一个白色刷子

HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));
return HBRUSH(m_HollowBrush);
case CTLCOLOR_EDIT:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkColor(RGB(225,225,225));
return HBRUSH(m_WhiteBrush);
default:
break;
}
HBRUSH hbr = CBDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
zhangshengyu 2006-06-27
  • 打赏
  • 举报
回复
WM_CTLCOLOR 我用了,在XP下用XP界面,STATIC 可以
但是CHECKBOX不行——变成黑的了。
allenhiman 2006-06-26
  • 打赏
  • 举报
回复
WM_CTLCOLOR
zhangshengyu 2006-06-26
  • 打赏
  • 举报
回复
老大们,你们到底有没有试过啊。
pitter211 2006-06-24
  • 打赏
  • 举报
回复
可以设置控件属性啊 setwindowlong 然后再置为transparent试试
zhangshengyu 2006-06-16
  • 打赏
  • 举报
回复
顶啊
zhangshengyu 2006-06-15
  • 打赏
  • 举报
回复
我是在对话框ONPAINT里自绘改变了对话框的颜色和背景,放上去的控件就不能弄成透明。设置transparent没用。
handsomerun 2006-06-15
  • 打赏
  • 举报
回复
static有控件不是有一个属性的吗,transparent,把他勾上,就ok、

其他也一样

15,979

社区成员

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

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