可否创建一个MemDC,再得到Desktop或你要的窗口的WndDC,从WndDC BitBlt 到 MemDC,就可以通过访问MemDC联系着的Bitmap的内容(是一个数组来的)来知道你要的颜色了。
希望能帮得上你,
如果你用这个方法解决了问题,请告知我。
如果有另外的方法,也请你告诉我。
希望能帮得上你,
如果你用这个方法解决了问题,请告知我。
如果有另外的方法,也请你告诉我。
解决方案 »
- 出错??
- 【求助】请问在VC里,如何导出DLL里的类及其函数?调用程序应该如何写?多谢
- CHtmlView:应用如何主动去填HTML文件中的表单?
- 原来的dsp文件没有了,如何重新做?
- 请教:ADO连接数据库时“WINDOWS.H already included”
- 保护模式下,段寄存器还有什么用处?
- 在使用CShockwaveFlash控件播放flash时,如何获得该flash的长度(播放时间)?
- debug下正确,release下出错,AfxBeginThread函数传递参数的问题
- 如何把一个无源码静态连接库封装成dll,谢谢。
- 我在用Serialize有疑问,CArchive 和CFile的区别!
- VC6的帮助文件在哪里?
- 如何用VC++控制WindowsNT重启?
//把屏幕上的0,0,100,100的点信息抓下来
UINT cx=100,cy=100;//cx=width,cy=height
UINT x=0,y=0;//x=startX,y=startYBITMAPINFO bitmapInfo;
unsigned char * pBuffer=new unsigned char[cx*cy*3];
memset(pBuffer,0,sizeof(char)*(cx*cy*3));
memset(&bitmapInfo,0,sizeof(BITMAPINFO));HDC hScreenDC = ::GetDC(NULL);
HDC hMemDC = ::CreateCompatibleDC(hScreenDC);
HBITMAP hBitmap = ::CreateCompatibleBitmap(hScreenDC,cx,cy);
::SelectObject(hMemDC,hBitmap);
::BitBlt(hMemDC,0,0,cx,cy,hScreenDC,x,y,SRCCOPY);bitmapInfo.bmiHeader.biWidth=cx;
bitmapInfo.bmiHeader.biHeight=cy;
bitmapInfo.bmiHeader.biBitCount=24;
bitmapInfo.bmiHeader.biPlanes=1;
bitmapInfo.bmiHeader.biSizeImage=cx*cy*3;
bitmapInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);::GetDIBits(hMemDC,hBitmap,0,cy,pBuffer,&bitmapInfo,DIB_RGB_COLORS);
//... you do here
delete []pBuffer;
::ReleaseDC(NULL,hScreenDC);
::DeleteDC(hMemDC);
::DeleteObject(hBitmap);