这是微软自带的一个利用cimage进行截图的例子,值得看看
来源:互联网 发布:国际经济数据 编辑:程序博客网 时间:2024/05/22 05:25
struct CaptureData{BOOL bCaptureFullScreen;char szCapturePath[MAX_PATH]; // no unicode path supportchar szCaptureFilename[MAX_PATH];};void WINAPI CaptureScreen(CaptureData* lpData){ASSERT(lpData);if (!lpData)return;AFX_MANAGE_STATE(AfxGetStaticModuleState());BOOL bStat;CImage image;CWnd *pWnd;CRect rect;if (lpData->bCaptureFullScreen) {pWnd = CWnd::GetDesktopWindow();}else {pWnd = CWnd::GetActiveWindow();}ASSERT(pWnd);if (pWnd == NULL)return;CWindowDC winDC(pWnd);pWnd->GetWindowRect(rect);int nBPP = winDC.GetDeviceCaps(BITSPIXEL) * winDC.GetDeviceCaps(PLANES);if (nBPP < 24)nBPP = 24;bStat = image.Create(rect.Width(), rect.Height(), nBPP); //创建图像ASSERT(bStat);if (!bStat)return;CImageDC imageDC(image); //将图像绘制到imageDC 中::BitBlt(imageDC, 0, 0, rect.Width(), rect.Height(), winDC, 0, 0, SRCCOPY);CString strTempName = GetTempName(CString(lpData->szCapturePath)); //保存为指定格式和路径中HRESULT hr = image.Save(strTempName);if (FAILED(hr)) {TRACE("Couldn't Save File: %s, %x\n", (LPCTSTR)strTempName, hr);return;}strncpy_s(lpData->szCaptureFilename, MAX_PATH, CT2A(::PathFindFileName(strTempName)), _TRUNCATE);}//获取文件名和路径static CString GetTempName(CString strPath){const int nMin = 0;const int nMax = 999;const CString strBase(_T("ScreenCap"));static int nLastKnown = nMin;// count up sequentially to make sure we take the next available// slotif (strPath.Right(1) != "\\")strPath += '\\';bool bFound = false;CString strPathName;while (!bFound) {if (nLastKnown > nMax)break;strPathName = strPath + strBase;strPathName.AppendFormat(_T("%03.3d.png"), nLastKnown++);HANDLE hFile = ::CreateFile(strPathName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);if (hFile != INVALID_HANDLE_VALUE) {::CloseHandle(hFile);bFound = TRUE;}}if (!bFound)strPathName.Empty();return(strPathName);}
0 0
- 这是微软自带的一个利用cimage进行截图的例子,值得看看
- msdn自带的一个利用CString的Tokenize函数进行分词的例子
- 利用CImage进行屏幕截图
- 利用CImage进行屏幕截图
- 调用android自带的截图工具进行截图
- 调用android自带的截图工具进行截图
- lazarus(ct版)自带的一个超级酷的三维动画例子截图
- 利用androidStudio自带的截图工具截图,不在用手机截图然后传到电脑上了
- 怎样利用MAC中自带的截图工具
- Ubuntu下利用自带的工具截图
- Oracle自带的一个Oci8例子
- 一个老业务的经验之谈,值得看看!
- 利用VS2008自带的安装部署软件进行打包!
- 利用苹果自带相机进行录像的代码
- iOS应用利用自带的地图进行定位
- 利用jdk自带的线程池进行多线程编程
- Vista自带的截图工具
- windows自带的截图方法
- s:if标签test属性多el表达式
- “大型票务系统”和“实物电商系统”和企业其他部门的依赖关系对项目管理的影响
- 虚函数的特性
- 程序员可以在周末做的8件事
- gentoo下面安装metasploit的一些问题
- 这是微软自带的一个利用cimage进行截图的例子,值得看看
- 希望成绩出来的时候我不会在伤心一次求不要太低啊
- mysql存储过程的创建,删除,调用及其他常用命令
- 深入探索 Java 热部署
- 标准W3C盒子模型和IE盒子模型CSS布局经典盒子模型
- 黑马程序员---多线程、线程间通信
- 【C语言】一道给力的题目
- 工作中用到linux命令(mac系统)
- mysql 反向查询 函数创建