面对现实,超越自己
逆水行舟,不进则退
posts - 269,comments - 32,trackbacks - 0
响应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(25500));
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


posted on 2012-09-12 16:34 王海光 阅读(956) 评论(0)  编辑 收藏 引用 所属分类: MFC

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