为CEdit设置背景图片

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

以CSkinEdit( public CEdit )为例:

设置Edit的属性:Multiline, 无Border

1.映射消息:

ON_WM_CTLCOLOR_REFLECT()

HBRUSH CSkinEdit::CtlColor(CDC* pDC, UINT nCtlColor)

{

// TODO: Change any attributes of the DC here

CBitmap bmp;

bmp.LoadBitmap( IDB_BITMAP1 );

m_Brush.Detach();

m_Brush.CreatePatternBrush( &bmp );

pDC->SetBkMode(TRANSPARENT);

return (HBRUSH)m_Brush;

// TODO: Return a non-NULL brush if the parent's handler should not be called

return NULL;

}

m_Brush为CBrush类型的成员变量.

特别注意:

pDC的坐标原点为Edit控件左上角在父窗口的坐标, 所以IDB_BITMAP1左上角对应Edit父窗口的左上角,而不是Edit控件的左上角

2.映射消息:

ON_CONTROL_REFLECT(EN_CHANGE, OnChange)

void CSkinEdit::OnChange()

{

// TODO: If this is a RICHEDIT control, the control will not

// send this notification unless you override the CEdit::OnInitDialog()

// function and call CRichEditCtrl().SetEventMask()

// with the ENM_CHANGE flag ORed into the mask.

// TODO: Add your control notification handler code here

InvalidateRect( NULL );

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航