获取屏幕信息后怎么读取其像素信息

获取屏幕信息后如何读取其像素信息
先说说目的,我需要获取屏幕中的某个指定区域,并将其转化为像素信息通过USB接口传递给专用设备,传递方式为:以两个字节为一个像素,循环发送。

目前能通过如下代码获取到位图句柄:

HBITMAP CscreentestDlg::CopyScreenToBitmap(LPRECT lpRect)//lpRect为需要获取的矩形区域
{
  HDC hScrDC, hMemDC; // 屏幕和内存设备描述表
  HBITMAP hBitmap,hOldBitmap; // 位图句柄
  int nX, nY, nX2, nY2; // 选定区域坐标
  int nWidth, nHeight; // 位图宽度和高度
  int xScrn, yScrn; // 屏幕分辨率
  // 确保选定区域不为空矩形
  if (IsRectEmpty(lpRect))
  {
  return NULL;
  }

  //为屏幕创建设备描述表
  hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);

  //为屏幕设备描述表创建兼容的内存设备描述表
  hMemDC = CreateCompatibleDC(hScrDC);

  // 获得选定区域坐标
  nX = lpRect->left;
  nY = lpRect->top;
  nX2 = lpRect->right;
  nY2 = lpRect->bottom;

  // 获得屏幕分辨率
  xScrn = GetDeviceCaps(hScrDC, HORZRES);
  yScrn = GetDeviceCaps(hScrDC, VERTRES);

  //确保选定区域是可见的
  if (nX < 0)
  nX = 0;
  if (nY < 0)
  nY = 0;
  if (nX2 > xScrn)
  nX2 = xScrn;
  if (nY2 > yScrn)
  nY2 = yScrn;
  nWidth = nX2 - nX;
  nHeight = nY2 - nY;

  // 创建一个与屏幕设备描述表兼容的位图
  hBitmap=CreateCompatibleBitmap(hScrDC,nWidth,nHeight);

  // 把新位图选到内存设备描述表中
  hOldBitmap=(HBITMAP)SelectObject(hMemDC,hBitmap);

  // 把屏幕设备描述表拷贝到内存设备描述表中
  BitBlt(hMemDC,0,0, nWidth,nHeight,hScrDC, nX, nY, SRCCOPY);

  //得到屏幕位图的句柄
  hBitmap=(HBITMAP)SelectObject(hMemDC,hOldBitmap);

  //清除 
  DeleteDC(hScrDC);
  DeleteDC(hMemDC);

  // 返回位图句柄
  return hBitmap;
}

请问下一步应该如何获取其中的具体像素信息,或者如果有其他思路应该怎么处理?

------解决方案--------------------
C/C++ code
int GetDIBits(
  HDC hdc,           // handle to DC
  HBITMAP hbmp,      // handle to bitmap
  UINT uStartScan,   // first scan line to set
  UINT cScanLines,   // number of scan lines to copy
  LPVOID lpvBits,    // array for bitmap bits
  LPBITMAPINFO lpbi, // bitmap data buffer
  UINT uUsage        // RGB or palette index
);

------解决方案--------------------
用GetPixel(x,y)一个个点来读取数据
------解决方案--------------------
GetPixel()忒慢,GetBits()直接访问数据,速度不可同日而语~
------解决方案--------------------
探讨
引用:
你是要传裸数据还是要传图片信息?
裸数据的话仔细看一楼的函数就可以满足你获取数据的要求了
要是带文件信息你还要自己填一个bmp的文件头


传图片信息,图片信息直接从内存里面读取,然后按三个字节一个像素的格式发送。就是怎么获取像素的问题。