Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2648973
  • 博文数量: 416
  • 博客积分: 10220
  • 博客等级: 上将
  • 技术积分: 4193
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-15 09:47
文章分类

全部博文(416)

文章存档

2022年(1)

2021年(1)

2020年(1)

2019年(5)

2018年(7)

2017年(6)

2016年(7)

2015年(11)

2014年(1)

2012年(5)

2011年(7)

2010年(35)

2009年(64)

2008年(48)

2007年(177)

2006年(40)

我的朋友

分类: C/C++

2008-12-31 11:35:22

放到OnPaint中就行

CDC * pWndDC = GetDC();
  CRect WndRect;
  GetClientRect(&WndRect);
  int OldState = pWndDC->SaveDC();
  
  CFont font, *pFont;
  LOGFONT lf;
  //memset(&lf, 0, sizeof(LOGFONT)); //从非系统得到时,要清空
  pFont = GetFont();
  pFont->GetLogFont(&lf);
  font.CreateFontIndirect(&lf);
  CFont *pOldFont = pWndDC->SelectObject(&font);
  CSize size = pWndDC->GetTextExtent(_T("Hello World"));
  CDC MemDC;
  MemDC.CreateCompatibleDC(pWndDC);         // 创建内存DC
  pWndDC->RestoreDC(OldState);
  CBitmap MemBitmap;
  MemBitmap.CreateCompatibleBitmap(         // 创建兼容的位图
   pWndDC,
   WndRect.Width(),
   WndRect.Height());
  //BitBlt只有到位图(或其它)才能成功,SelectObject不可少
  MemDC.SelectObject(MemBitmap);            // 让内存DC输出到位图
  // 使用MemDC画图
  // 。。。。。。
  MemDC.SetBkColor(RGB(200,200,0));
  MemDC.SetTextColor(RGB(200,0,0));
  CRect rc = CRect(0,0,80,30);
  MemDC.DrawText(_T("World"),&rc, DT_CENTER);
  MemDC.TextOut(0,30, _T("World MAKKKK"));
  pWndDC->BitBlt(                                // 从内存DC复制到窗口DC
   0,0,
   WndRect.Width(),
   WndRect.Height(),
   &MemDC,
   0,0,
   SRCCOPY);
  pWndDC->SelectObject(pOldFont);
  DeleteDC(MemDC);
  ReleaseDC(pWndDC);
阅读(1821) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-01-15 14:28:38

方法一: 此方法在设备结束时不会销毁原来的资源(即:hDC,hBitmap) CDC *pDC = CDC::FromHandle(hDC); CBitmap *pBitmap = CBitmap::FromHandle(hBitmap); 方法二: 此方法在设备结束时会销毁原来的资源(即:hDC,hBitmap) CDC dc; dc.Attach(hDC); CBitmap bit; bit.Attach(hBitmap); 方法二可以在结束的时候加dc.detach()也不会销毁原来资源