桌面截图程序
来源:互联网 发布:联想s800软件 编辑:程序博客网 时间:2024/05/22 14:44
在VC6.0下测试通过
// TODO: Add your control notification handler code here//CString str;//m_FlashPlayer.Zoom(250);CDC* pDeskDC = GetDesktopWindow()->GetDC();//获取桌面画布对象CRect rc;GetDesktopWindow()->GetClientRect(rc);//获取屏幕的客户区域CDC memDC;//定义一个内存画布memDC.CreateCompatibleDC(pDeskDC);//创建一个兼容的画布CBitmap bmp;bmp.CreateCompatibleBitmap(pDeskDC,rc.Width(),rc.Height());//创建与桌面兼容位图对象,与目前在该设备上下文选择位图的格式相同memDC.SelectObject(&bmp); //选中位图对象// m_X = m_RecvX;// m_Y = m_RecvY;memDC.BitBlt(0,0,rc.Width(),rc.Height(),pDeskDC,0,0,SRCCOPY);//复制一个从源设备上下文位图到当前设备上下文,在此主要是确定复制位图的大小BITMAP bitmap;bmp.GetBitmap(&bitmap);//调用此成员函数来检索有关一个CBitmap对象的信息GetDeviceCaps(pDeskDC->m_hDC, PLANES);//下面要把DDB变成DIBint panelsize = 0; //记录调色板大小if (bitmap.bmBitsPixel<16) //判断是否为真彩色位图panelsize = (pow(2,bitmap.bmBitsPixel)*sizeof(RGBQUAD));//计算2的bitmap.bmBitsPixel*sizeof(RGBQUAD)次幂BITMAPINFO *pBInfo = (BITMAPINFO*)LocalAlloc(LPTR,sizeof(BITMAPINFOHEADER)+panelsize);pBInfo->bmiHeader.biBitCount = bitmap.bmBitsPixel;//每位像素用几位来显示/当前显示分辨率下每个像素所占字节数(调色板的数目)pBInfo->bmiHeader.biClrImportant = 0;//指定颜色的索引数量是用于显示位图需要。如果这个值是零,所有颜色都需要pBInfo->bmiHeader.biCompression = BI_RGB;//压缩类型pBInfo->bmiHeader.biHeight = rc.Height();pBInfo->bmiHeader.biPlanes = 1;//指定目标设备的数位面pBInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);pBInfo->bmiHeader.biSizeImage = bitmap.bmWidthBytes*bitmap.bmHeight;//指定图像的字节大小:每行字节*高度pBInfo->bmiHeader.biWidth = rc.Width();pBInfo->bmiHeader.biXPelsPerMeter = 0;pBInfo->bmiHeader.biYPelsPerMeter = 0;pBInfo->bmiHeader.biClrUsed=0;char* pData = new char[bitmap.bmWidthBytes* bitmap.bmHeight];//位图的数据大小,用来存放数据::GetDIBits(memDC.m_hDC,bmp,0,bitmap.bmHeight,pData,pBInfo,DIB_RGB_COLORS);//把位图数据放到上面的指针指向的地方int BufSize = panelsize+ sizeof(BITMAPINFOHEADER)+bitmap.bmWidthBytes* bitmap.bmHeight;//DIB(设备无关位图)的组成BITMAPFILEHEADER bmpfileheader;HANDLE had=CreateFile("e:\\abc.bmp",GENERIC_WRITE,0,NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL);if (had==INVALID_HANDLE_VALUE)AfxMessageBox("创建文件失败");bmpfileheader.bfType=0x4D42;bmpfileheader.bfSize=BufSize+54;bmpfileheader.bfReserved1=0;bmpfileheader.bfReserved2=0;bmpfileheader.bfOffBits=54;DWORD write;WriteFile(had,(LPSTR)&bmpfileheader,sizeof(BITMAPFILEHEADER),&write,NULL);WriteFile(had,(LPSTR)pBInfo,sizeof(BITMAPINFOHEADER)+panelsize,&write,NULL);WriteFile(had,(LPSTR)pData,bitmap.bmWidthBytes* bitmap.bmHeight,&write,NULL);delete[] pData;LocalFree(pBInfo);pDeskDC->DeleteDC();bmp.DeleteObject();memDC.DeleteDC();CloseHandle(had);//最后没有调用FlushFileBuffers、CloseHandle来刷新BUF,关闭文件~~//不然,程序不关闭的话,不能打开图片,也不能再截图//AfxMessageBox(str);
- 桌面截图程序
- C# 桌面截图代码
- C# 桌面截图
- 桌面截图scrot用法
- QT5实现桌面截图
- PyQt实现桌面截图
- ubuntu 14.04桌面截图
- 程序截图
- C# 桌面截图工具 demo
- windows之C# 桌面截图
- 桌面程序
- FASM桌面截图片保存到文件
- 保持带图标的桌面截图
- win7下Qt5获取桌面截图
- 通过adb来给手机桌面截图
- 【电视桌面CSWUI】电视桌面(launcher)截图欣赏
- 一款截图程序
- Java截图程序
- 啦啦啦,开张了。。。。
- 用数据管理过程(1)——以数据“感知”项目状况
- MySQL5安装
- 内核调用用户空间可执行文件以及潜在问题分析
- Run-Time Check Failure #2 - Stack around the variable 'ucPriKey' was corrupt
- 桌面截图程序
- U3D资源动态加载异步方案探究
- 利用WinDriver开发PCI设备驱动程序
- .h头文件 .lib库文件 .dll动态库文件之间的关系
- XCode5使用低版本SDK
- Spring与RMI集成实现远程访问
- OpenCV与GDAL混合编程处理遥感图像
- 如何使用android的ndk建立native的开发环境
- div垂直居中