91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++實現屏幕截圖功能

發布時間:2020-10-05 09:35:53 來源:腳本之家 閱讀:422 作者:sunflover454 欄目:編程語言

本文實例為大家分享了C++實現全屏截圖功能的具體代碼,供大家參考,具體內容如下

最近維護的項目,在某些情況下,光有日志還不行,于是添加了截圖功能,特定情況下,會自動截圖,輔助分析,從而改進程序。以下是截圖實現代碼。

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()); 
 //創建一個兼容的內存畫板 
 CDC memorydc; 
 memorydc.CreateCompatibleDC(pdeskdc); 
 //選中畫筆 
 CBitmap *pold = memorydc.SelectObject(&bmp); 
 //繪制圖像 
 memorydc.BitBlt(0, 0, re.Width(), re.Height(), pdeskdc, 0, 0, SRCCOPY); 
 //獲取鼠標位置,然后添加鼠標圖像 
 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); 
 //定義 圖像大小(單位:byte) 
 DWORD size = bit.bmWidthBytes * bit.bmHeight; 
 LPSTR lpdata = (LPSTR)GlobalAlloc(GPTR, size); 
 //后面是創建一個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無損文件,體積會有些大,朋友可以轉化為png格式保存哦。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德兴市| 龙游县| 尼木县| 垫江县| 永年县| 广丰县| 朝阳县| 太湖县| 静海县| 南皮县| 边坝县| 怀远县| 蓝田县| 梅州市| 东阿县| 山阳县| 龙井市| 松溪县| 丹寨县| 观塘区| 鱼台县| 张掖市| 伊春市| 武夷山市| 旺苍县| 东城区| 桦甸市| 醴陵市| 宝丰县| 甘南县| 通州区| 蒲城县| 永德县| 梅州市| 平顶山市| 宁远县| 呼伦贝尔市| 长乐市| 双鸭山市| 文安县| 中江县|