散分!CEdit自绘背景,该如何处理

散分!CEdit自绘背景
CEdit背景自绘.
方案:
在CtlColor设置透明.
在OnEraseBkgnd自绘.
在OnEnChange使之无效.
代码如下.
C/C++ code

#pragma once


// CBmpEdit

class CBmpEdit : public CEdit
{
    DECLARE_DYNAMIC(CBmpEdit)
public:
    CBmpEdit();
    virtual ~CBmpEdit();
protected:
    DECLARE_MESSAGE_MAP()
public:
    afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    afx_msg  HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
public:
    CBitmap m_Bitmap;
    CBrush m_Brush;
    afx_msg BOOL OnEraseBkgnd(CDC* pDC);
    afx_msg void OnEnChange();
};


响应WM_ERASEBKGND
C/C++ code

CBmpEdit::CBmpEdit()
{
    m_Bitmap.LoadBitmap(IDB_BITMAP1);
}
BOOL CBmpEdit::OnEraseBkgnd(CDC* pDC)
{
     //TODO: 在此添加消息处理程序代码和/或调用默认值
    CDC memDC;
    memDC.CreateCompatibleDC(pDC);
    memDC.SelectObject(&m_Bitmap);
    BITMAP m_Bmp;
    m_Bitmap.GetBitmap(&m_Bmp);
    CRect rect;
    GetClientRect(&rect);
//拉伸贴图
    pDC->StretchBlt(0,0,rect.Width() ,rect.Height(),&memDC,0,0,m_Bmp.bmWidth,m_Bmp.bmHeight,SRCCOPY);
    memDC.DeleteDC();
    return TRUE;
    //return CEdit::OnEraseBkgnd(pDC);
}

响应=WM_CTLCOLOR
C/C++ code
HBRUSH CBmpEdit::CtlColor(CDC* pDC,  UINT nCtlColor)
{
    // TODO:  在此更改 DC 的任何属性
//透明
    pDC->SetBkMode(TRANSPARENT);
//字体色彩
    pDC->SetTextColor(RGB(0,255,0));
//空的画笔
        return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    // TODO:  如果默认的不是所需画笔,则返回另一个画笔
}

最后,
C/C++ code

void CBmpEdit::OnEnChange()
{
//使无效
    Invalidate();
}

这里需要注意的是,设置透明是在=WM_CTLCOLOR里设置的,不是在WM_CTLCOLOR中.
有=的是从父窗口反射回来的消息.当然也可以在父窗口的WM_CTLCOLOR中设置透明,不过这样就封装得不好了.

------解决方案--------------------
分享帖??
接分。。。
------解决方案--------------------
JF......
------解决方案--------------------
谢谢LZ,学习了
------解决方案--------------------
接~~~~
------解决方案--------------------
学习一下,老长时间不做这方面了
------解决方案--------------------
接分,顺便学习
------解决方案--------------------
jf~
------解决方案--------------------
用这个方法改变过CEdit的背景色,没绘过图
------解决方案--------------------
学习。。。
------解决方案--------------------
谢谢lz,学习了
------解决方案--------------------
虚心学习
------解决方案--------------------
来凑个热闹
------解决方案--------------------
好人啊
------解决方案--------------------
占位学习
------解决方案--------------------
mark,学习下
------解决方案--------------------

------解决方案--------------------