我在写一个程序,需要不停的抓屏幕进行分析,我用了这段代码抓屏幕:
void CCardCounterDlg::CaptureScreen()
{
//建立一个屏幕设备环境句柄 
hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL); 
hMemDC = CreateCompatibleDC(hdcScreen); 
hDealRegion = CreateCompatibleDC(hdcScreen);
//建立一个与屏幕设备环境句柄 
hBitmap  = CreateCompatibleBitmap(hdcScreen, nWidth, nHeight); 
hBitmap1 = CreateCompatibleBitmap(hdcScreen, 180, 110); 
// 把屏幕设备描述表拷贝到内存设备描述表中 
hOldBitmap = (HBITMAP) SelectObject(hMemDC , hBitmap);
hOldBitmap1 = (HBITMAP) SelectObject(hDealRegion, hBitmap1);

BitBlt(hMemDC, 0, 0, nWidth, nHeight, hdcScreen, 
0, 0,SRCCOPY); //400ms
}1。我看书上,一般都要deleteDC(hMemDc),这个函数有什么用?我只在程序结束时调用一次行不行?
2.程序运行的时候,因为抓图比较多,cpu和内存占用的太多了,是不是我这段代码有问题,有什么改进的办法吗?谢谢!