在窗体中的WM_CTLCOLOR消息中响应下面的函数

HBRUSH CmyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
/*

每一个控件刷新的时候都发送这个消息,其中pDC是控件的dc,pWnd是控件对应的CWnd类,nCtlColor是控件的类型。比如Edit控件对应的是CTLCOLOR_EDIT

*/

    
if ((pWnd->GetDlgCtrlID() == IDC_EDIT1) && (nCtlColor == CTLCOLOR_EDIT))
    
{
        COLORREF clr 
= RGB(255,0,0);
        pDC
->SetTextColor(clr);           //设置红色的文本
        clr = RGB(0,0,0);
        pDC
->SetBkColor(clr);             //设置黑色的背景

        
return ::CreateSolidBrush(clr);  //作为约定,返回背景色对应的刷子句柄。
    }

    
else
    
{
        HBRUSH hbr 
= CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
        
return hbr;
    }

}


/*
   返回的背景颜色是可以被文字覆盖的,但是SetBkColor的就不会,如果设置了DC的透明模式,则不会被覆盖住了。
*/

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理