久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

截圖保存

 小月餅之家 2011-08-01
 HBITMAP CopyScreenToBitmap(int &nWidth, int &nHeight)
{
// 屏幕和內(nèi)存設(shè)備描述表
HDC  hScrDC, hMemDC;      
// 位圖句柄
HBITMAP  hBitmap, hOldBitmap;    
// 屏幕分辨率
int  xScrn, yScrn;         

//為屏幕創(chuàng)建設(shè)備描述表
hScrDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL);
//為屏幕設(shè)備描述表創(chuàng)建兼容的內(nèi)存設(shè)備描述表
hMemDC = CreateCompatibleDC(hScrDC);
// 獲得屏幕分辨率
xScrn = GetDeviceCaps(hScrDC, HORZRES);
yScrn = GetDeviceCaps(hScrDC, VERTRES);
 
//存儲(chǔ)屏幕的長(zhǎng)寬
nWidth = xScrn;
nHeight = yScrn;

// 創(chuàng)建一個(gè)與屏幕設(shè)備描述表兼容的位圖
hBitmap = CreateCompatibleBitmap(hScrDC, xScrn, yScrn);
// 把新位圖選到內(nèi)存設(shè)備描述表中
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
// 把屏幕設(shè)備描述表拷貝到內(nèi)存設(shè)備描述表中
BitBlt(hMemDC, 0, 0, xScrn,yScrn,hScrDC, 0, 0, SRCCOPY);

SaveDCToBMP(hMemDC,0,0,nWidth,nHeight,_T("\\TheScreen.bmp"));
 
//得到屏幕位圖的句柄
hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);
//清除 
DeleteDC(hScrDC);
DeleteDC(hMemDC);
// 返回位圖句柄
return hBitmap;
}
 
BOOL SaveDCToBMP(HDC hDC,int nStartX,int nStartY,int nWidth,int nHeight,LPCTSTR szFileName)
{
//定義圖形色深
int iPixel = 32;
//位圖信息頭
LPBITMAPINFO lpbmih = new BITMAPINFO;
lpbmih->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
lpbmih->bmiHeader.biWidth = nWidth;
lpbmih->bmiHeader.biHeight = nHeight;
lpbmih->bmiHeader.biPlanes = 1;
lpbmih->bmiHeader.biBitCount = iPixel;
lpbmih->bmiHeader.biCompression = BI_RGB;
lpbmih->bmiHeader.biSizeImage = 0;
lpbmih->bmiHeader.biXPelsPerMeter = 0;
lpbmih->bmiHeader.biYPelsPerMeter = 0;
lpbmih->bmiHeader.biClrUsed = 0;
lpbmih->bmiHeader.biClrImportant = 0;
lpbmih->bmiColors[1].rgbBlue=8;
lpbmih->bmiColors[1].rgbGreen =8;
lpbmih->bmiColors[1].rgbRed =8;
lpbmih->bmiColors[1].rgbReserved =8;

//創(chuàng)建位圖數(shù)據(jù)
HDC hdcMem;
HBITMAP hBitMap = NULL;
CBitmap *pBitMap = NULL;
CDC *pMemDC = NULL;
//BYTE *pBits;
//hBitMap = CreateDIBSection(hdcMem,lpbmih,DIB_PAL_COLORS,(void **)&pBits,NULL,0);
LPVOID pBits;
hdcMem = CreateCompatibleDC(hDC);
hBitMap = CreateDIBSection(hdcMem,lpbmih,DIB_RGB_COLORS,&pBits,NULL,0);
if(!hBitMap)
{
CString lpMsgBuf="init error str(frx savebmp)";
FormatMessage( 
FORMAT_MESSAGE_ALLOCATE_BUFFER | 
FORMAT_MESSAGE_FROM_SYSTEM | 
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
0, // Default language
(LPTSTR)(LPCTSTR)lpMsgBuf,
0,
NULL 
);
AfxMessageBox((LPCTSTR)lpMsgBuf);
// Free the buffer.
return false;
}
pBitMap = new CBitmap;
pBitMap->Attach(hBitMap);
pMemDC = new CDC;
pMemDC->Attach(hdcMem);
pMemDC->SelectObject(pBitMap);

pMemDC->BitBlt(0,0,nWidth,nHeight,CDC::FromHandle(hDC),nStartX,nStartY,SRCCOPY);
BITMAPFILEHEADER bmfh;//位圖文件頭
ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER));
*((char *)&bmfh.bfType) = 'B';
*(((char *)&bmfh.bfType) + 1) = 'M';
bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
bmfh.bfSize = bmfh.bfOffBits + (nWidth * nHeight) * iPixel / 8;
int iBMPBytes = nWidth * nHeight * iPixel / 8;
CFile file;
if(file.Open(szFileName,CFile::modeWrite | CFile::modeCreate))
{
file.Write(&bmfh,sizeof(BITMAPFILEHEADER));
file.Write(&(lpbmih->bmiHeader),sizeof(BITMAPINFOHEADER));
file.Write(pBits,iBMPBytes);
file.Close();
}
else return false;
DeleteObject(hBitMap);
DeleteObject(hDC);
pMemDC->DeleteDC();
delete pMemDC; pMemDC = NULL;
delete pBitMap; pBitMap = NULL;
delete lpbmih; lpbmih = NULL;
return true;


CopyScreenToBitmap是將當(dāng)前屏幕保存為圖片的代碼。
SaveDCToBMP是將DC保存為圖片文件的公用函數(shù),。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多