重载CView::OnDraw()文档显示

发布时间:2011-08-29 共1页

  此段代码在MFC下显式一个文档。
  CMfcsView : public CView;
  void CMfcsView::OnDraw(CDC* pDC)//在视图上显示,CDC设备描述符表
  {
  CMfcsDoc* pDoc = GetDocument();//调用这个函数获得与视图相连接的文档指针。如果没有相连接的文档,返回NULL
  ASSERT_VALID(pDoc);//此函数检测pDoc指针是否返回NULL。
  // TODO: add draw code for native data here
  //my
  CRect rect,rect1,rect2;
  GetClientRect(&rect);//计算客户区的显示坐标,赋值给rect
  CFont font1,*oldfont;
  font1.CreatePointFont(160,_T("隶书"));
  oldfont=pDC->SelectObject(&font1);//将字体写入描述符,并将描述符中的以前的字体使oldfont指向
  TEXTMETRIC tm;//这个结构体包含了有关物理字体的各种信息,他依赖于当前环境。
  pDC->GetTextMetrics((&tm));//自动计算当前设备描述符的字符的宽度和高度等信息
  pDC->SetTextColor(RGB(150,163,255));//背景色
  pDC->SetBkMode(TRANSPARENT);//是否透明(字体的背景是否覆盖背景色)
  rect1=rect;
  rect1.top=20*tm.tmExternalLeading;
  rect1.bottom=rect1.top+(tm.tmHeight+20*tm.tmExternalLeading);//将矩形区域显示在合适位置
  CBrush brush,*oldbrush;
  brush.CreateSolidBrush(RGB(0,220,220));
  oldbrush=pDC->SelectObject(&brush);//设置笔刷
  pDC->FillRect(rect1,&brush);//画刷填充矩形
  CString Title;
  Title.Format(_T("%10s%12s%10s%10s%10s%10s%10s%10s"),"股票代码","股票名称","昨收盘价","开盘价","最高价","最低价","收盘价","成交量");
  pDC->DrawText(Title,&rect1,DT_SINGLELINE|DT_CENTER|DT_VCENTER);//显示Title字符串,在rect1的矩形框内,后边设置显式格式。如DT_CENTER设置在矩形框中间显示
  rect2=rect;
  rect2.top=3*tm.tmExternalLeading+rect1.bottom;
  rect2.bottom=rect2.top+(tm.tmHeight+2*tm.tmExternalLeading);
  pDC->FillRect(rect2,oldbrush);//为矩形框设置画刷,即将话刷的颜色设置为画刷的颜色。
  CString Spp;
  Spp.Format(_T("%10s%12s%10s%10s%10s%10s%10s%10s"),"24415","中国石油","13","15","20","14","13","1400");
  pDC->DrawText(Spp,&rect2,DT_SINGLELINE|DT_CENTER|DT_VCENTER);//显示
  }

百分百考试网 考试宝典

立即免费试用