如何改变的Static控件颜色?
对话框中有两个Static控件IDC_STATIC1和IDC_STATIC2,我想使一个为红色一个为绿色,在对话框的消息WM_CTLCOLOR处理中竟不能实现(这两个控件的颜色还是原来的黑色),
想请教各位大侠,pWnd指的是哪个窗口的指针?如何才能实现上述?
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
CWnd *pStatic1=GetDlgItem(IDC_STATIC1);
CWnd *pStatic2=GetDlgItem(IDC_STATIC2);
if (pWnd==pStatic1)
{
pDC->SetTextColor(RGB(255,0,0));
}
if (pWnd==pStatic2)
{
pDC->SetTextColor(RGB(0,255,0));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
问题点数:50、回复次数:6Top
1 楼wistaria(听风听雨)回复于 2000-12-15 14:03:00 得分 20
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(nCtlColor == CTLCOLOR_EDIT)
{
if(pWnd->GetDlgCtrlID()==IDC_STATIC1))//设置控件IDC_STATIC1
{
pDC->SetBkColor(RGB(255,0,0));
return 一个刷子;
}
if(pWnd->GetDlgCtrlID()==IDC_STATIC2)//设置控件IDC_STATIC2
{
pDC->SetBkColor(RGB(0,255,0);
return 一个刷子;
}
}
if(nCtlColor==CTLCOLOR_EDIT)//设置对话框背景
{
pDC->SetBkColor(...);
return 一个刷子
}
// TODO: Return a different brush if the default is not desired
return hbr;
}Top
2 楼Hidy(Hidy)回复于 2000-12-15 14:05:00 得分 20
怎么又有这样的问题?把下面的代码COPY过去,应该没问题的:
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
switch(pWnd->GetDlgCtrlID())
{
case IDC_STATIC1 :
pDC->SetTextColor(RGB(255,0,0));
break;
case IDC_STATIC2 :
pDC->SetTextColor(RGB(0,255,0));
break;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
Top
3 楼Hidy(Hidy)回复于 2000-12-15 14:06:00 得分 0
为什么我会比 wistaria 晚了一步?Top
4 楼lhxx(随风)回复于 2000-12-15 14:07:00 得分 5
wistaria说得不错,当然如果你愿意也可以继承CStatic,然后重载它的OnPaint()Top
5 楼ecore(电子内核)回复于 2000-12-15 16:27:00 得分 5
就是得到她的DC啊,然后爱怎样怎样。Top
6 楼myb123(myb123)回复于 2000-12-15 17:18:00 得分 0
Thank all people!That's right!Add score!Top




