SetBkMode(TRANSPARENT) 问题!

quziao 2007-03-01 11:19:59
if(nCtlColor == CTLCOLOR_STATIC)
{
//区分静态控件
switch(pWnd->GetDlgCtrlID())
{
case IDC_STATIC1:
{
pDC->SelectObject(&m_Font1);
pDC->SetTextColor(RGB(0, 0, 255));
//pDC->SetBkMode(TRANSPARENT);
break;
}
case IDC_STATIC2:
{
pDC->SelectObject(&m_Font2);
pDC->SetTextColor(RGB(255, 0, 0));
// pDC->SetBkMode(TRANSPARENT);
break;
}
}
}

为什么在OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)中加了pDC->SetBkMode(TRANSPARENT); 而不好使,没有达到透明去掉控件背景的作用,我继承的控件,在ONPAINT()函数里设置就好用呢?
...全文
1225 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
双杯献酒 2007-03-01
  • 打赏
  • 举报
回复
这个函数只能去掉 文字 的背景,
默认情况下,一个文字是一个方块,
文字用文本前景,背景用文字背景(可能和窗口背景不一样),
使用这个函数后,文字背景就透明了(和窗口背景一样),
但窗口背景并不也变成透明.
拿节 2007-03-01
  • 打赏
  • 举报
回复
pDC->SetBkMode(TRANSPARENT);只是使文本背景与控件背景一样!
所以我们还得使控件背景透明!

HBRUSH m_hBrush = (HBRUSH) GetStockObject(HOLLOW_BRUSH);

然后在
pDC->SelectObject(&m_Font1);
pDC->SetTextColor(RGB(0, 0, 255));
pDC->SetBkMode(TRANSPARENT);
return m_hBrush;
返回就可以了!

15,975

社区成员

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

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