响应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
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
posted on 2012-09-12 16:34
王海光 阅读(981)
评论(0) 编辑 收藏 引用 所属分类:
MFC