最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)屏幕截圖功能

 更新時(shí)間:2018年05月15日 14:09:51   作者:sunflover454  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)屏幕截圖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++實(shí)現(xiàn)全屏截圖功能的具體代碼,供大家參考,具體內(nèi)容如下

最近維護(hù)的項(xiàng)目,在某些情況下,光有日志還不行,于是添加了截圖功能,特定情況下,會(huì)自動(dòng)截圖,輔助分析,從而改進(jìn)程序。以下是截圖實(shí)現(xiàn)代碼。

void CDemoDlg::ScreenShot(void) 
{ 
 CWnd *pDesktop = GetDesktopWindow(); 
 CDC *pdeskdc = pDesktop->GetDC(); 
 CRect re; 
 //獲取窗口的大小 
 pDesktop->GetClientRect(&re); 
 CBitmap bmp; 
 bmp.CreateCompatibleBitmap(pdeskdc, re.Width(), re.Height()); 
 //創(chuàng)建一個(gè)兼容的內(nèi)存畫板 
 CDC memorydc; 
 memorydc.CreateCompatibleDC(pdeskdc); 
 //選中畫筆 
 CBitmap *pold = memorydc.SelectObject(&bmp); 
 //繪制圖像 
 memorydc.BitBlt(0, 0, re.Width(), re.Height(), pdeskdc, 0, 0, SRCCOPY); 
 //獲取鼠標(biāo)位置,然后添加鼠標(biāo)圖像 
 CPoint po; 
 GetCursorPos(&po); 
 HICON hinco = (HICON)GetCursor(); 
 memorydc.DrawIcon(po.x - 10, po.y - 10, hinco); 
 //選中原來的畫筆 
 memorydc.SelectObject(pold); 
 BITMAP bit; 
 bmp.GetBitmap(&bit); 
 //定義 圖像大?。▎挝唬篵yte) 
 DWORD size = bit.bmWidthBytes * bit.bmHeight; 
 LPSTR lpdata = (LPSTR)GlobalAlloc(GPTR, size); 
 //后面是創(chuàng)建一個(gè)bmp文件的必須文件頭 
 BITMAPINFOHEADER pbitinfo; 
 pbitinfo.biBitCount = 24; 
 pbitinfo.biClrImportant = 0; 
 pbitinfo.biCompression = BI_RGB; 
 pbitinfo.biHeight = bit.bmHeight; 
 pbitinfo.biPlanes = 1; 
 pbitinfo.biSize = sizeof(BITMAPINFOHEADER); 
 pbitinfo.biSizeImage = size; 
 pbitinfo.biWidth = bit.bmWidth; 
 pbitinfo.biXPelsPerMeter = 0; 
 pbitinfo.biYPelsPerMeter = 0; 
 GetDIBits(pdeskdc->m_hDC, bmp, 0, pbitinfo.biHeight, lpdata, (BITMAPINFO*) 
  &pbitinfo, DIB_RGB_COLORS); 
 BITMAPFILEHEADER bfh; 
 bfh.bfReserved1 = bfh.bfReserved2 = 0; 
 bfh.bfType = ((WORD)('M' << 8) | 'B'); 
 bfh.bfSize = size + 54; 
 bfh.bfOffBits = 54; 
 //寫入文件 
 CFile file; 
 CString strFileName(GetAppPathW().c_str()); 
 strFileName += _T("ScreenShot\\"); 
 CreateDirectory((LPCTSTR)strFileName, NULL); 
 CTime t = CTime::GetCurrentTime(); 
 CString tt = t.Format("%Y-%m-%d_%H-%M-%S"); 
 strFileName += tt; 
 strFileName += _T(".bmp"); 
 if (file.Open((LPCTSTR)strFileName, CFile::modeCreate | CFile::modeWrite)) 
 { 
  file.Write(&bfh, sizeof(BITMAPFILEHEADER)); 
  file.Write(&pbitinfo, sizeof(BITMAPINFOHEADER)); 
  file.Write(lpdata, size); 
  file.Close(); 
 } 
 GlobalFree(lpdata); 
} 

代碼注釋詳盡,我就不多說啥了,保存為bmp無(wú)損文件,體積會(huì)有些大,朋友可以轉(zhuǎn)化為png格式保存哦。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++計(jì)算圓形、矩形和三角形的面積

    C++計(jì)算圓形、矩形和三角形的面積

    這篇文章介紹了C++計(jì)算圓形、矩形和三角形面積的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • C++用new創(chuàng)建對(duì)象和不用new創(chuàng)建對(duì)象的區(qū)別解析

    C++用new創(chuàng)建對(duì)象和不用new創(chuàng)建對(duì)象的區(qū)別解析

    在C++用new創(chuàng)建對(duì)象和不用new創(chuàng)建對(duì)象是有區(qū)別的,不知你是否清楚的了解它們到底有什么樣的區(qū)別呢?下面小編就用示例來告訴大家吧,需要的朋友可以過來參考下
    2013-07-07
  • C++中const、volatile、mutable使用方法小結(jié)

    C++中const、volatile、mutable使用方法小結(jié)

    這篇文章主要介紹了C++中const、volatile、mutable使用方法小結(jié),需要的朋友可以參考下
    2020-01-01
  • C++快速調(diào)用DeepSeek API的完整指南

    C++快速調(diào)用DeepSeek API的完整指南

    最近,DeepSeek的API引起了我的興趣,它提供了強(qiáng)大的對(duì)話生成能力,可以用于多種應(yīng)用場(chǎng)景,雖然DeepSeek官方提供了詳細(xì)的API文檔,但遺憾的是,目前沒有專門針對(duì)C++的調(diào)用示例,所以,本文給大家實(shí)現(xiàn)一個(gè)C++版本的調(diào)用示例,需要的朋友可以參考下
    2025-03-03
  • C語(yǔ)言直接插入排序算法

    C語(yǔ)言直接插入排序算法

    大家好,本篇文章主要講的是C語(yǔ)言直接插入排序算法,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C語(yǔ)言實(shí)現(xiàn)五子棋人人對(duì)戰(zhàn)

    C語(yǔ)言實(shí)現(xiàn)五子棋人人對(duì)戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)五子棋人人對(duì)戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版掃雷小游戲

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 使用Matlab制作大富翁小游戲的過程詳解

    使用Matlab制作大富翁小游戲的過程詳解

    大富翁大家都玩過,走到建筑的位置可以買地,第二圈走到買過的地可以升級(jí),別人經(jīng)過后需要付過路費(fèi),每次經(jīng)過起點(diǎn)都會(huì)獲得一定資金,玩到最后還沒破產(chǎn)的就是勝者,本文將制作一個(gè)Matlab版的大富翁小游戲,需要的可以參考一下
    2022-02-02
  • C++調(diào)用tensorflow教程

    C++調(diào)用tensorflow教程

    今天小編就為大家分享一篇關(guān)于C++調(diào)用tensorflow教程,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 詳解利用C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池

    詳解利用C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池的相關(guān)資料,設(shè)計(jì)內(nèi)存池的目標(biāo)是為了保證服務(wù)器長(zhǎng)時(shí)間高效的運(yùn)行,通過對(duì)申請(qǐng)空間小而申請(qǐng)頻繁的對(duì)象進(jìn)行有效管理,減少內(nèi)存碎片的產(chǎn)生,合理分配管理用戶內(nèi)存,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

淳化县| 石门县| 左贡县| 常宁市| 丹东市| 荥阳市| 张家界市| 新竹县| 辽阳县| 布尔津县| 顺昌县| 翁牛特旗| 烟台市| 麟游县| 沂南县| 乐陵市| 平果县| 翼城县| 繁昌县| 新民市| 宾川县| 肇庆市| 古蔺县| 陆丰市| 准格尔旗| 贵港市| 兴宁市| 普兰县| 阿尔山市| 万全县| 岳普湖县| 汝城县| 贡觉县| 阿尔山市| 茌平县| 镇原县| 江源县| 绍兴市| 新邵县| 临西县| 图木舒克市|