欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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無損文件,體積會(huì)有些大,朋友可以轉(zhuǎn)化為png格式保存哦。

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

相關(guān)文章

  • c++ 函數(shù)指針相關(guān)總結(jié)

    c++ 函數(shù)指針相關(guān)總結(jié)

    這篇文章主要介紹了c++ 函數(shù)指針的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-02-02
  • 詳解C語言實(shí)現(xiàn)推箱子的基本功能(2)

    詳解C語言實(shí)現(xiàn)推箱子的基本功能(2)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)推箱子的基本功能的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 解析C/C++指針、函數(shù)、結(jié)構(gòu)體、共用體

    解析C/C++指針、函數(shù)、結(jié)構(gòu)體、共用體

    這篇文章主要介紹了C/C++指針、函數(shù)、結(jié)構(gòu)體、共用體的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • 模擬鼠標(biāo)事件的實(shí)現(xiàn)思路及代碼

    模擬鼠標(biāo)事件的實(shí)現(xiàn)思路及代碼

    這篇文章主要介紹了模擬鼠標(biāo)事件的實(shí)現(xiàn)思路及代碼,有需要的朋友可以參考一下
    2013-12-12
  • C++中的memset用法詳解

    C++中的memset用法詳解

    memset是一個(gè)初始化函數(shù),作用是將某一塊內(nèi)存中的全部設(shè)置為指定的值,本文給大家介紹C++中的memset用法,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • 關(guān)于win32 gettimeofday替代方案

    關(guān)于win32 gettimeofday替代方案

    下面小編就為大家?guī)硪黄P(guān)于win32 gettimeofday替代方案。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • 基于內(nèi)核線程的創(chuàng)建、使用和退出以及延時(shí)宏的補(bǔ)充說明介紹

    基于內(nèi)核線程的創(chuàng)建、使用和退出以及延時(shí)宏的補(bǔ)充說明介紹

    本篇文章是對(duì)內(nèi)核線程的創(chuàng)建、使用和退出以及延時(shí)宏的補(bǔ)充說明介紹進(jìn)行了敘述。需要的朋友參考下
    2013-05-05
  • C++中的數(shù)據(jù)內(nèi)存分布原理

    C++中的數(shù)據(jù)內(nèi)存分布原理

    這篇文章主要介紹了C++中的數(shù)據(jù)內(nèi)存分布,主要從動(dòng)態(tài)內(nèi)存管理方式,內(nèi)存泄漏等方面介紹的,文中也有相關(guān)的示例代碼,需要的朋友可以參考下
    2023-05-05
  • 使用remalloc的注意事項(xiàng)說明(必看篇)

    使用remalloc的注意事項(xiàng)說明(必看篇)

    下面小編就為大家?guī)硪黄褂胷emalloc的注意事項(xiàng)說明(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • C/C++?Qt?StringListModel?字符串列表映射組件詳解

    C/C++?Qt?StringListModel?字符串列表映射組件詳解

    StringListModel?字符串列表映射組件,該組件用于處理字符串與列表框組件中數(shù)據(jù)的轉(zhuǎn)換,通常該組件會(huì)配合ListView組件一起使用,本文給大家介紹了C/C++?Qt?StringListModel?字符串列表映射組件的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2021-12-12

最新評(píng)論