我在做一个MFC截图,不知道代码是否有错,估计没错,现在的疑问是如果代码没错的话,截完图保存到剪切板了,然后到哪里打开这个图
void C截图Dlg::GetScreenCapture()
{
//桌面窗口的设备上下文DC//画布
HDC hDesktopDC = ::CreateDC(_T("DISPLAY"),NULL,NULL,NULL); //加::指出是API函数调用,不是成员函数调用
HDC hMemDC = ::CreateCompatibleDC(hDesktopDC);
//创建一个空白位图
HBITMAP hBmp,hOldBmp;
int iWidth = abs(m_tEndpt.x-m_tBeginPt.x);
int iHeight = abs(m_tEndpt.y-m_tBeginPt.y);
hBmp = ::CreateCompatibleBitmap(hDesktopDC,iWidth,iHeight);
//把位图放到内存DC
hOldBmp = (HBITMAP)::SelectObject(hMemDC,hBmp);
//把截图区域拷贝到内存DC
POINT pt =m_tBeginPt;
ClientToScreen(&pt);//把窗口客户区的相对坐标点转化为桌面屏幕坐标点
//把选定的桌面区域拷贝到内存DC
::BitBlt(hMemDC,0,0,iWidth,iHeight,hDesktopDC,pt.x,pt.y,SRCCOPY);
//把旧的设备位图设置回去
hBmp = (HBITMAP)SelectObject(hMemDC,hBmp);
//释放
DeleteDC(hMemDC);
DeleteDC(hDesktopDC);
//把位图保存到剪切板
if(OpenClipboard())//打开剪切板
{
EmptyClipboard();//清空剪切板
SetClipboardData(CF_BITMAP,hBmp);
CloseClipboard();
MessageBox(L"fsg");
}
DeleteObject(hBmp);
DeleteObject(hMemDC);
DeleteObject(hDesktopDC);
}
如果已经保存到了剪贴板,可以先粘贴到画图或者word中,然后再看吗
应该保存到文件,然后用ShellExecute打开
学习中......
给我学习学习,学习学习学习