如何设置有背景颜色的文本

来源:清泛编译     2016-05-23 13:43:54    人气:     我有话说( 0 人参与)

1.属性页的添加:创建对话框的类,该类要从CpropertyPage继承;然后在要添加该对话框为 属性页的类(头文件)里创建CpropertySheet类的一

49.如何设置有背景颜色的文本
(1)[解决方法]
  用到了CDC::SetBkMode();
 
 [程序实现] 
  void CMyView::OnDraw(CDC* pDC)
  {
    CMyDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    CRect rcView;//加這兩句
    GetClientRect(rcView);
    // TODO: add draw code for native data here
    CString str (_T("Perfect Text...")); 
    pDC->SetBkMode(TRANSPARENT); 
    rcView.OffsetRect (1,1); 
    pDC->SetTextColor(RGB (0,0,0)); 
    pDC->DrawText(str,str.GetLength(),rcView,DT_SINGLELINE | DT_CENTER | DT_VCENTER); 
    rcView.OffsetRect(-1,-1); 
    pDC->SetTextColor(RGB (255,0,0)); 
    pDC->DrawText(str,str.GetLength(),rcView,DT_SINGLELINE | DT_CENTER | DT_VCENTER); 
  }
(2) 建立名为My的SDI或MDI,并响应WM_ERASEBKGND.
  BOOL CMyView::OnEraseBkgnd(CDC* pDC) 
  {
   // TODO: Add your message handler code here and/or call default
   CBrush Brush (RGB(114,147,171)); 
   // Select the brush into the device context . 
   CBrush* pOldBrush = pDC->SelectObject(&Brush); 
   // Get the area that needs to be erased . 
   CRect ViewClip; 
   pDC->GetClipBox(&ViewClip); 
   //Paint the area. 
   pDC->PatBlt(ViewClip.left,ViewClip.top,ViewClip.Width(),ViewClip.Height(),PATCOPY); 
   //Unselect brush out of device context . 
   pDC->SelectObject (pOldBrush ); 
   // Return nonzero to half fruther processing . 

   return TRUE;
   return CView::OnEraseBkgnd(pDC);
  }
  此方法也适合基类是EditView的SDI或MDI的情况,但是字体的颜色和底色不行.建议用WM_CTLCOLOR.

本文导航

MFC 总结 技巧

本文源自互联网,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,
版权归原作者,如有问题请联系service@tsingfun.com (编辑:admin)
分享到: