MFC对话框贴图做背景后,slider control的背景变黑,求助!谢谢!

yifanw90 2015-01-20 10:26:21
在OnPaint()中加载图片作为对话框的背景,发现slider control的背景变黑(如图1),且滑动后变为图2的样子。
控件 slider control 的背景模式调为Transparent 和 非Transparent,都没有解决。

求大神帮忙,非常感谢!


(图1)


(图2)
...全文
2259 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hurryboylqs 2017-06-09
  • 打赏
  • 举报
回复
这就是为什么DUI存在的原因
creay_king 2017-06-06
  • 打赏
  • 举报
回复
我也是这样的问题,只不过我的是整个Static text都是背景黑色的,有哪位大神可以告诉我是怎么回事吗?
惜双若雅 2015-08-18
  • 打赏
  • 举报
回复
你好 你的问题解决了吗?我现在也遇到同样的问题
yifanw90 2015-01-23
  • 打赏
  • 举报
回复
引用 3 楼 jimoguilai 的回复:
所有控件都这样么?还是只有slider?


其他控件都没有问题,只有slider出先了上述问题。

我在OnPaint里写了加载背景图像:
CPaintDC dc(this);
CRect rc;
GetClientRect(&rc);
dc.SetStretchBltMode(COLORONCOLOR);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBG;
bmpBG.LoadBitmap(IDB_BG1); //IDB_BG1 是背景的ID

BITMAP bitmap1;
bmpBG.GetBitmap(&bitmap1);
CBitmap* pbmpPri = dcMem.SelectObject(&bmpBG);
dc.StretchBlt(0,0,rc.Width(), rc.Height(), &dcMem,0,0,bitmap1.bmWidth, bitmap1.bmHeight, SRCCOPY);

在OnCtlColor()中通过如下代码实现了静态、编辑等等控件的背景透明化:
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC || nCtlColor==CTLCOLOR_SCROLLBAR)
{
pDC->SetBkMode(TRANSPARENT);//透明
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
其实对slider背景不透明也可以,但它现在出现了黑色背景,且左右滑动滑块后,会出现如问题的图2所示情况,我对改控件的属性也进行了很多False 和True的很多改变,也不好使,下图是slider现在的属性截图


谢谢你们!
Chivalry 2015-01-22
  • 打赏
  • 举报
回复
把代码贴出来吧,有时间大家帮你看看
Chivalry 2015-01-22
  • 打赏
  • 举报
回复
所有控件都这样么?还是只有slider?
yifanw90 2015-01-21
  • 打赏
  • 举报
回复
引用 1 楼 shen_wei 的回复:
控件透明化。。。
谢谢,只是已经对控件改过Transparent了,始终没有效果
shen_wei 2015-01-21
  • 打赏
  • 举报
回复
控件透明化。。。

1,649

社区成员

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

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