12 楼jiangping_zhu(娜可露露之风之刃)回复于 2001-09-05 10:55:46 得分 0

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

13 楼BABIZHU(巴比猪)回复于 2001-09-05 11:25:30 得分 40

算了,我还是给你说吧,算是自己练链手  
  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()搞定!  
   
  Top

14 楼BABIZHU(巴比猪)回复于 2001-09-05 11:30:37 得分 0

算了,我还是给你说吧,算是自己练链手  
  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));  
   
  }

posted on 2008-11-05 21:24  最简单的  阅读(1442)  评论(0)    收藏  举报