用CEDIT显示读出的文本,能够显示出来,但是拖动滚动条时,出现文字重叠,当选择这些文字时,又刷新了,重叠消失,该如何解决呢?

miaoer   2008-12-25 18:03 楼主
用CEDIT显示读出的文本,能够显示出来,但是拖动滚动条时,出现文字重叠,当选择这些文字时,又刷新了,重叠消失,该如何解决呢?

回复评论 (11)

读入文件后

当下拉后  

当选择出现重叠的文本之后  
点赞  2008-12-26 10:57
读入文件后

当下拉后   

当选择出现重叠的文本之后  
点赞  2008-12-26 11:20
读入文件后  

当下拉后   

当选择出现重叠的文本之后
点赞  2008-12-26 11:25
你的cedit控件在onctrlcolor中,也就是控件绘制的时候,不能设置背景模式透明!!!
点赞  2008-12-26 18:04
不那样搞的话,你可以派生一个cxxedit类,在OnEraseBkgnd中插除背景
点赞  2008-12-26 18:11
这种现象跟画线程序原理一样,你以前的画的跟现在画的都显示,当然重叠。
在显示的时候把以前的文字反色跟背景色一样就行了。
motta021说的也对
点赞  2008-12-26 19:01
噢噢,还有这么玄机的东西,谢谢两位大侠,我研究下!
点赞  2008-12-27 18:51

9楼 gga 

你的刷新有问题,肯定是在刷新的时候没有清背景造成的.
点赞  2008-12-28 08:23
学习了一把
点赞  2008-12-28 10:33
搞定了,有个简单的。不要设置透明,设置颜色就好了

  1. HBRUSH CTxtReaderDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  2. {
  3.         HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  4.        
  5.         // TODO: Change any attributes of the DC here
  6.        
  7.        
  8.         CBrush     m_brush;//色彩刷子.     
  9.         m_brush.CreateSolidBrush(RGB(0,     0,     0));     //生成一背景色刷子
  10.        
  11.     if(pWnd->GetDlgCtrlID()   ==   IDC_EDIT1)   
  12.         {   
  13.                 pDC->SetTextColor(RGB(0,   0,   0));  //文字
  14.                 pDC->SetBkColor( RGB(255,255,255));           
  15.                 HBRUSH   hBr   =   CreateSolidBrush(RGB(255,255,255));//背景
  16.                 return   (HBRUSH)   hBr;
  17.         }   
  18.         else   
  19.         {   
  20.                 return   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);   
  21.         }  

  22.         return hbr;
  23. }
点赞  2008-12-29 15:01
呵呵 恭喜
点赞  2008-12-29 15:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复