BitBlt双缓冲显示有关问题

BitBlt双缓冲显示问题?
本帖最后由 VisualEleven 于 2014-05-15 10:04:14 编辑
我在对话框上放一个Static框. 想在这个区域中做图片各像素显示及分析.
GetDlgItem(IDC_TFT)->GetWindowRect(&MyProject.MyLayout.rcTFT);
ScreenToClient(MyProject.MyLayout.rcTFT);

CClientDC dc(this);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc, MyProject.MyLayout.rcTFT.Width(), MyProject.MyLayout.rcTFT.Height());
CBitmap * pOldBitmap = dcMem.SelectObject(&bitmap);
dcMem.BitBlt(0,0,    //保存上一幅图片
 MyProject.MyLayout.rcTFT.Width(),
 MyProject.MyLayout.rcTFT.Height(),
 &dc,
 //0,0,
 MyProject.MyLayout.rcTFT.left,MyProject.MyLayout.rcTFT.top,
 SRCCOPY); 
//********************************************************************
DrawXY(&dcMem); //显示像素处理
//*****************************************************************
dc.BitBlt(0,0,
  MyProject.MyLayout.rcTFT.Width(),
  MyProject.MyLayout.rcTFT.Height(),
  &dcMem,
  0,0,  
  SRCCOPY); 
dcMem.SelectObject(pOldBitmap);
bitmap.DeleteObject();

运行结果出现copy dc或恢复dc显示BitBlt坐标不对现象,就是发现现实的区域不是全部在IDC_TFT框内. 请问是否我的BitBlt用法有问题?
------解决方案--------------------

CClientDC dc(this);//获取的是当前客户区的设备DC,你需要获取的是static控件的DC
 CClientDC *pDC=(CClientDC *)GetDlgItem(IDC_TFT)->GetDC(); //获取绘图框Static框的设备上下文dc

------解决方案--------------------
dc不对啊。
------解决方案--------------------
dc.BitBlt(0,0,
              MyProject.MyLayout.rcTFT.Width(),
              MyProject.MyLayout.rcTFT.Height(),
              &dcMem,
              0,0,             
              SRCCOPY); 
-->
dc.BitBlt(MyProject.MyLayout.rcTFT.left,
               MyProject.MyLayout.rcTFT.top,
              MyProject.MyLayout.rcTFT.Width(),
              MyProject.MyLayout.rcTFT.Height(),
              &dcMem,
              0,0,             
              SRCCOPY); 

这样????