MFC改变控件内的字体颜色

MFC改变控件内的字体颜色
响应WM_CTLCOLOR消息
WM_CTLCOLOR消息的响应函数.此函数的原型:
  afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor);
  参数nCtlColor用于指定控件的类型,可以是:
  .CTLCOLOR_BTN       按钮控件
  .CTLCOLOR_DLG       对话框
  .CTLCOLOR_EDIT      编辑框
  .CTLCOLOR_LISTBOX   列表控件
  .CTLCOLOR_MSGBOX    消息控件
  .CTLCOLOR_SCROLLBAR 滚动条控件
  .CTLCOLOR_STATIC    静态控件


MSDN中信息:

The framework calls this member function when a child control is about to be drawn.

1  afx_msg HBRUSH OnCtlColor(
2     CDC *  pDC,
3     CWnd *  pWnd,
4     UINT nCtlColor 
5  );

Parameters

pDC

Contains a pointer to the display context for the child window. May be temporary.

pWnd

Contains a pointer to the control asking for the color. May be temporary.

nCtlColor

Contains one of the following values, specifying the type of control:

  • CTLCOLOR_BTN   Button control

  • CTLCOLOR_DLG   Dialog box

  • CTLCOLOR_EDIT   Edit control

  • CTLCOLOR_LISTBOX   List-box control

  • CTLCOLOR_MSGBOX   Message box

  • CTLCOLOR_SCROLLBAR   Scroll-bar control

  • CTLCOLOR_STATIC   Static control

Return Value

OnCtlColor must return a handle to the brush that is to be used for painting the control background.

Example
 1  //  This OnCtlColor handler will change the color of a static control
 2  //  with the ID of IDC_MYSTATIC. The code assumes that the CPenWidthsDlg
 3  //  class has an initialized and created CBrush member named m_brush.
 4  //  The control will be painted with red text and a background
 5  //  color of m_brush.
 6  HBRUSH CPenWidthsDlg::OnCtlColor(CDC *  pDC, CWnd *  pWnd, UINT nCtlColor)
 7  {
 8      //  Call the base class implementation first! Otherwise, it may
 9      //  undo what we're trying to accomplish here.
10     HBRUSH hbr  =  CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
11 
12      //  Are we painting the IDC_MYSTATIC control? We can use
13      //  CWnd::GetDlgCtrlID() to perform the most efficient test.
14      if  (pWnd -> GetDlgCtrlID()  ==  IDC_MYSTATIC)
15     {
16         //  Set the text color to red
17        pDC -> SetTextColor(RGB( 255 0 0 ));
18 
19         //  Set the background mode for text to transparent 
20         //  so background will show thru.
21        pDC -> SetBkMode(TRANSPARENT);
22 
23         //  Return handle to our CBrush object
24        hbr  =  m_brush;
25     }
26 
27      return  hbr;
28  }
 

Requirements

Header: afxwin.h


你可能感兴趣的:(MFC改变控件内的字体颜色)