www.vckbase.com
www.vchelp.net
maybe had soem example

解决方案 »

  1.   

    send current message WM_ERASEBKGROUND to parent 
      

  2.   

    好像发WM_ERASEBKGROUND消息,也不行,你传递的HDC是当前的edit的窗口句柄,还是别的,我试了一下,位图背景画的不对(位置发生了偏移),你能不能再说详细一点啊!
      

  3.   

    可以的呀,在WM_ERASEBKGROUND中不要画图,而是将画刷设为透明,具体请看msdn中的参数
      

  4.   

    BOOL CMyEdit::OnEraseBkgnd(CDC* pDC) 
    {
    pDC->SetBkColor(::GetSysColor(COLOR_WINDOW));
    pDC->SetBkMode(TRANSPARENT);
             return TRUE;
    }
      

  5.   

    算了,我还是给你说吧,算是自己练链手
    1、继承Cedit类
    2、重载OnEraseBkgnd函数内容如下
    CBitmap bitmap;
    CDC dcMemory;
    CRect rect;

    bitmap.LoadBitmap(IDB_BITMAP1);
    dcMemory.CreateCompatibleDC(pDC);
    dcMemory.SelectObject(&bitmap);
    GetClientRect(rect); pDC->BitBlt(-2,-2,rect.Width(),rect.Height(),&dcMemory,0,0,SRCCOPY);
             return TRUE;
    很简单,就是显示一个文本框的背景图片,不用多解释吧!pDC->BitBlt内的参数需要自己调试一下,否则有可能对不齐,这也是一个不大不小的问题,不过对于定长的文本框和图片还是可以表现得很完美的!
    3、重载OnGetDlgCode函数,这可能是大家比较想不到的地方(我也是)
    这是重载CWnd的一个函数,作用是:为控件调用这个函数,使控件能够自己处理输入的箭头键和TAB键,。通过重载OnGetDlgCode,CWnd控件可以选择处理特定类型的输入。如果大家不明白,自己看MSDN。反正把输入焦点移动到CEdit上,就要调用这个函数就对了。这里重画该控件即可
    RedrawWindow(NULL, NULL,RDW_INVALIDATE | RDW_ERASE ); 

    return CEdit::OnGetDlgCode();剩下的问题就好办了,重载OnMouseMove函数,因为你有可能会拖动鼠标来选择文本框的文本,也是重画该文本框即可。当然你还要重载OnLButtonDown之类的函数来判断鼠标是否实在按下左件的状态进行脱动。使用方法就不用多说了吧!!!用SubclassDlgItem()搞定!
      

  6.   

    算了,我还是给你说吧,算是自己练链手
    1、继承Cedit类
    2、重载OnEraseBkgnd函数内容如下
    CBitmap bitmap;
    CDC dcMemory;
    CRect rect;

    bitmap.LoadBitmap(IDB_BITMAP1);
    dcMemory.CreateCompatibleDC(pDC);
    dcMemory.SelectObject(&bitmap);
    GetClientRect(rect); pDC->BitBlt(-2,-2,rect.Width(),rect.Height(),&dcMemory,0,0,SRCCOPY);
             return TRUE;
    很简单,就是显示一个文本框的背景图片,不用多解释吧!pDC->BitBlt内的参数需要自己调试一下,否则有可能对不齐,这也是一个不大不小的问题,不过对于定长的文本框和图片还是可以表现得很完美的!
    3、重载OnGetDlgCode函数,这可能是大家比较想不到的地方(我也是)
    这是重载CWnd的一个函数,作用是:为控件调用这个函数,使控件能够自己处理输入的箭头键和TAB键,。通过重载OnGetDlgCode,CWnd控件可以选择处理特定类型的输入。如果大家不明白,自己看MSDN。反正把输入焦点移动到CEdit上,就要调用这个函数就对了。这里重画该控件即可
    RedrawWindow(NULL, NULL,RDW_INVALIDATE | RDW_ERASE ); 

    return CEdit::OnGetDlgCode();剩下的问题就好办了,重载OnMouseMove函数,因为你有可能会拖动鼠标来选择文本框的文本,也是重画该文本框即可。当然你还要重载OnLButtonDown之类的函数来判断鼠标是否实在按下左件的状态进行脱动。使用方法就不用多说了吧!!!用SubclassDlgItem()搞定!哦,还要罗嗦一句,在该控件的的对话框的OnCtlColor函数中要把背景色为透明
    if((nCtlColor == CTLCOLOR_EDIT) && (pWnd->GetDlgCtrlID()==IDC_EDIT1))
    {
    pDC->SetBkMode(TRANSPARENT); //设置背景透明,这样,输出字符的时候就是所谓的空心字,而不是有白的底色
    pDC->SetTextColor(RGB(255,0,0)); //改变字体的颜色
    return HBRUSH(GetStockObject(HOLLOW_BRUSH));}
      

  7.   

    多谢BABIZHU(巴比猪),我需要试一下,之后一定给分
      

  8.   

    jiangping_zhu(娜可露露之风之刃) :哇,太过分了吧,这样都不给分,让人心寒哦!!