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控件
为什么改变不了颜色
是Pictrue控件
为什么改变不了颜色
#2
Type选Rectangle,颜色选择black
在我机子上就是纯黑,为什么你的?
---------
++C++
---------
在我机子上就是纯黑,为什么你的?
---------
++C++
---------
#3
你机器什么县卡啊?分辨率和色彩深度?
谢谢
谢谢
#4
不可能阿
我试验了好几个机器
16位的时候是rgb(66,65,66)
32位的时候是rgb(0,0,0)
我试验了好几个机器
16位的时候是rgb(66,65,66)
32位的时候是rgb(0,0,0)
#5
up1x
#6
WM_CTLCOLOR
你用SDK吗?
你用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;
}
打开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控件
为什么改变不了颜色
是Pictrue控件
为什么改变不了颜色
#2
Type选Rectangle,颜色选择black
在我机子上就是纯黑,为什么你的?
---------
++C++
---------
在我机子上就是纯黑,为什么你的?
---------
++C++
---------
#3
你机器什么县卡啊?分辨率和色彩深度?
谢谢
谢谢
#4
不可能阿
我试验了好几个机器
16位的时候是rgb(66,65,66)
32位的时候是rgb(0,0,0)
我试验了好几个机器
16位的时候是rgb(66,65,66)
32位的时候是rgb(0,0,0)
#5
up1x
#6
WM_CTLCOLOR
你用SDK吗?
你用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;
}
打开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
好多答案?
我怎么不知道
我怎么不知道