如图,我用的是白色的背景图片,可以看的出来,STATIC控件的背景色没变,还是以前的那个,所以看的很奇怪。
1号之前的日期和超出月底最后一天之后的日期,全部都是用的灰色表示
在OnCtlColor里,代码都是
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(128,128,128));
,但是现在发现了控件的背景色没改,于是又加上 pDC-> SetBkColor(RGB(255,250,250));
但是没效果,
现在就想问问,如何才能将控件的背景色设置为对话框的背景,在模板里我将控件设定成具有透明背景,也没效果,
请教如何操作!!!
6 个解决方案
#1
所有的控件都是 STATIC 控件?
#2
CTLCOLOR_BTN 按钮控件
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表控件
CTLCOLOR_MSGBOX 消息控件
CTLCOLOR_SCROLLBAR 滚动条控件
CTLCOLOR_STATIC 静态控件
你是不是拦截的消息不对,不是控件的ID,是控件的类型
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表控件
CTLCOLOR_MSGBOX 消息控件
CTLCOLOR_SCROLLBAR 滚动条控件
CTLCOLOR_STATIC 静态控件
你是不是拦截的消息不对,不是控件的ID,是控件的类型
#3
if(nCtlColor==CTLCOLOR_STATIC) //更改按钮颜色
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(121,121,255));
HBRUSH b=CreateSolidBrush(RGB(121,121,255));
return b;
}
#4
if (pWnd->GetDlgCtrlID() == IDC_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
这样可以背景透明
#5
这只能将字的背景 变成透明,我已经试过了,而且,日历里的那些红色的灰色的字就是这样做的,控件的背景还是没变
#6
我貌似发现问题所在了,可能正如上面各位说的,是类型判断的有问题,这次我是在OnCtlColor里直接声明了一个白色的画刷,
然后直接在判断的外面将背景设置成透明的,然后在判断,然后直接将白色的画刷返回,就可以了!
然后直接在判断的外面将背景设置成透明的,然后在判断,然后直接将白色的画刷返回,就可以了!
#1
所有的控件都是 STATIC 控件?
#2
CTLCOLOR_BTN 按钮控件
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表控件
CTLCOLOR_MSGBOX 消息控件
CTLCOLOR_SCROLLBAR 滚动条控件
CTLCOLOR_STATIC 静态控件
你是不是拦截的消息不对,不是控件的ID,是控件的类型
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表控件
CTLCOLOR_MSGBOX 消息控件
CTLCOLOR_SCROLLBAR 滚动条控件
CTLCOLOR_STATIC 静态控件
你是不是拦截的消息不对,不是控件的ID,是控件的类型
#3
if(nCtlColor==CTLCOLOR_STATIC) //更改按钮颜色
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(121,121,255));
HBRUSH b=CreateSolidBrush(RGB(121,121,255));
return b;
}
#4
if (pWnd->GetDlgCtrlID() == IDC_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
这样可以背景透明
#5
这只能将字的背景 变成透明,我已经试过了,而且,日历里的那些红色的灰色的字就是这样做的,控件的背景还是没变
#6
我貌似发现问题所在了,可能正如上面各位说的,是类型判断的有问题,这次我是在OnCtlColor里直接声明了一个白色的画刷,
然后直接在判断的外面将背景设置成透明的,然后在判断,然后直接将白色的画刷返回,就可以了!
然后直接在判断的外面将背景设置成透明的,然后在判断,然后直接将白色的画刷返回,就可以了!