如何改变static背景色

时间:2021-10-11 14:52:26
在vc的resourceview里面往对话框上加了一个static
Type选Rectangle,颜色选择black

可是我发现,vc给这个static设置成RGB(66,65,66)了,而不是纯黑(0,0,0)

怎么改变啊?
我加上了MESSAGE_HANDLER(WM_CTLCOLORSTATIC,OnCtlColorStatic1)
LRESULT OnCtlColorStatic1(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
return (LRESULT)CreateSolidBrush(RGB(0,0,0));

}
可是不行啊,还是没变成纯黑

11 个解决方案

#1


说错了
是Pictrue控件 
为什么改变不了颜色

#2


Type选Rectangle,颜色选择black
在我机子上就是纯黑,为什么你的?

---------
  ++C++
---------

#3


你机器什么县卡啊?分辨率和色彩深度?
谢谢

#4


不可能阿
我试验了好几个机器
16位的时候是rgb(66,65,66)
32位的时候是rgb(0,0,0)

#5


up1x

#6


WM_CTLCOLOR

你用SDK吗?

#7


看看MSDN吧

#8


映射WM_CTLCOLOR消息。当然你在ClassWizard里面找不到这个消息的,你可以这样做:
打开ClassWizard,选择最后一个属性页ClassInfo,在本页面下半部,有一个Message Filter下拉列表框,一般默认是Dialog,你把它改成Window,然后回到第一个页面Message Maps,就能看到WM_CTLCOLOR消息了。

再给你一个示范代码:
void CChangeColorDlg::OnButtonChangecolor() 
{
CDC dc;
SendMessage(WM_CTLCOLOREDIT, (WPARAM) dc.GetSafeHdc(), 0);
GetDlgItem(IDC_EDIT_TEST)->SetFocus();
}

HBRUSH CChangeColorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
//Generate pseudorandom number
int R = rand()%255;
int G = rand()%255;
int B = rand()%255;

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

SetTextColor(pDC->m_hDC, RGB(R,G,B));
return hbr;
}

#9


上面这个代码是我用另外一个消息WM_CTLCOLOREDIT修改编辑框里面字体的颜色的,颜色的RGB值是随机产生的,只是演示用。

#10


MSDN中有好多答案啊

#11


好多答案?
我怎么不知道

#1


说错了
是Pictrue控件 
为什么改变不了颜色

#2


Type选Rectangle,颜色选择black
在我机子上就是纯黑,为什么你的?

---------
  ++C++
---------

#3


你机器什么县卡啊?分辨率和色彩深度?
谢谢

#4


不可能阿
我试验了好几个机器
16位的时候是rgb(66,65,66)
32位的时候是rgb(0,0,0)

#5


up1x

#6


WM_CTLCOLOR

你用SDK吗?

#7


看看MSDN吧

#8


映射WM_CTLCOLOR消息。当然你在ClassWizard里面找不到这个消息的,你可以这样做:
打开ClassWizard,选择最后一个属性页ClassInfo,在本页面下半部,有一个Message Filter下拉列表框,一般默认是Dialog,你把它改成Window,然后回到第一个页面Message Maps,就能看到WM_CTLCOLOR消息了。

再给你一个示范代码:
void CChangeColorDlg::OnButtonChangecolor() 
{
CDC dc;
SendMessage(WM_CTLCOLOREDIT, (WPARAM) dc.GetSafeHdc(), 0);
GetDlgItem(IDC_EDIT_TEST)->SetFocus();
}

HBRUSH CChangeColorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
//Generate pseudorandom number
int R = rand()%255;
int G = rand()%255;
int B = rand()%255;

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

SetTextColor(pDC->m_hDC, RGB(R,G,B));
return hbr;
}

#9


上面这个代码是我用另外一个消息WM_CTLCOLOREDIT修改编辑框里面字体的颜色的,颜色的RGB值是随机产生的,只是演示用。

#10


MSDN中有好多答案啊

#11


好多答案?
我怎么不知道