如题
解决方案 »
- 使用glutSwapBuffers,出现这样一个调试错误。
- 请问各位,如何将一个单文档应用程序封装成ActiveX控件?
- DLL中的回调函数 怎么使用全局变量
- [求助]如何禁止屏幕保护运行?
- 从缓冲到bmp的问题
- 请教各位朋友,如何动态的添加、删除CSplitterWnd的pane,如何动态的用不同的视替换一个pane的视?
- 怎样分解一个多字符串中的字符?为什么我分解出的不对?
- 我从cricheditview派生vc怎么说base not define 而从cricheditctrl怎么没有出错
- 关于清空列表框的问题
- 各位请帮帮忙啊!!!急啊!!!!
- 如何获得文件路径和名称啊???
- 请问用openGL如何实现图象的雾化特效(在线等)
CWnd *pWndSrc /*源窗口*/)
{
//当然正规点还得判断它IsKindof(“CWnd”),这里我就偷懒了
if(pWndDest==NULL || pWndSrc==NULL) return FALSE; CRect SrcRect;
pWndSrc->GetWindowRect(&SrcRect); // 内存设备描述表
HDC hSrcDC, hMemDC;
// 位图句柄
HBITMAP hBitmap, hOldBitmap;
// 位图宽度和高度
int nWidth, nHeight;
pWndSrc->Invalidate();
hSrcDC=pWndSrc->GetDC()->m_hDC; // 创建一个与源窗口设备描述表兼容的内存设备描述表
hMemDC = CreateCompatibleDC(hSrcDC);
nWidth = SrcRect.Width();
nHeight = SrcRect.Height(); // 创建一个与源窗口设备描述表兼容的位图
hBitmap = CreateCompatibleBitmap(hSrcDC, nWidth, nHeight);
// 把新位图选到内存设备描述表中
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
// 把屏幕设备描述表拷贝到内存设备描述表中
BitBlt(hMemDC, 0, 0, nWidth, nHeight,hSrcDC, 0, 0, SRCCOPY);
//得到位图的句柄
hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);
CRect DestRect;
GetWindowRect(&DestRect);
CDC dcMem;
//创建一个与目标窗口设备描述表兼容的位图
dcMem.CreateCompatibleDC(GetDC());
HBITMAP poldBitmap=(HBITMAP)SelectObject(dcMem.m_hDC,hBitmap);
GetDC()->StretchBlt(0,0 ,DestRect.Width(),DestRect.Height(),&dcMem,0 ,0,nWidth,nHeight,SRCCOPY); //显示位图
//善后工作
DeleteDC(hSrcDC);
DeleteDC(hMemDC);
dcMem.SelectObject(poldBitmap);
dcMem.DeleteDC();
return TRUE;
}